我正在使用一个组件来构建带有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>
答案 0 :(得分:2)
组件应该与您的应用程序无关,反之亦然。话虽这么说,他们可以对行动(或基础模型更改,如choices=categories
和action=updateTeams
做出反应。此外,您可以通过您发送的操作发送信息。对发送的操作和信息作出反应的人应该跟踪那些信息,而不是为它轮询组件。
我在下面的jsbin
中包含了一个显示这个概念的小例子