Emberjs - 获取组件的价值

时间:2013-11-19 22:08:39

标签: ember.js

我正在使用一个组件来构建带有Ember的select元素。每次更改一个选择值时,我需要获取每个值的值。问题是我只能获得更改后的值。如何从路线中选择一个组件?

应用程序的一部分:

// the route
App.TeamsRoute = Ember.Route.extend({
    setupController: function() {
      // send the values to build the options
      App.Category.findAll().then(function(categories) {
        controller.set('categories', categories)
      })
    },

    actions: {
      updateTeams: function() {
        // action triggered when a select is changed
        var controller = this.get('controller')

        // ?????
      }
    }
})

// component to trigger the action
App.CustomSelectComponent = Ember.Component.extend({
  change: function() {
    this.sendAction('action')
  }
})

模板:

// the way I build the element
{{custom-select choices=categories name="category" action="updateTeams"}}

// component template
<script type="text/x-handlebars" id="components/custom-select">
    <select name="{{name}}">
        {{#each choices}}
            <option value="{{unbound value}}">{{name}}</option>
        {{/each}}
    </select>
</script>

1 个答案:

答案 0 :(得分:2)

组件应该与您的应用程序无关,反之亦然。话虽这么说,他们可以对行动(或基础模型更改,如choices=categoriesaction=updateTeams做出反应。此外,您可以通过您发送的操作发送信息。对发送的操作和信息作出反应的人应该跟踪那些信息,而不是为它轮询组件。

我在下面的jsbin

中包含了一个显示这个概念的小例子

http://emberjs.jsbin.com/IyACuvIx/1/edit