我正努力让这个基本功能在Ember中运行。如何通过计算属性填充Ember.Select视图的选项,该属性观察通过另一个Ember.Select设置的另一个属性?
这是我到目前为止所做的:
HTML / HBS:
<script type="text/x-handlebars">
{{view Ember.Select
content=parent
optionValuePath="content.id"
optionLabelPath="content.name"
value=current_parent}}
{{view Ember.Select
content=child
value=current_child}}
</script>
使用Javascript:
App.ApplicationController = Ember.ArrayController.extend({
content: '', current_parent: null, current_child: null,
parent: function() {
return this.store.find('user');
}.property(),
child: function() {
var current_parent = this.get('current_parent');
if (current_parent) {
this.store.find('user', current_parent).then(function(parent) {
return parent.get('children');
}
}
}.property('current_parent')
});
App.User = DS.Model.extend({
name: DS.attr('string'),
children: DS.attr(),
});
从服务器返回JSON:
users: [{id: 0, name: 'test', children: ['child1', 'child2']}]
显然这不起作用。我很感激地解释我在这里出错的地方以及实现这个目的的可行方法。
我正在使用以下库:
提前致谢!
答案 0 :(得分:1)
我认为你不需要派生属性的孩子。您可以使用已具有children
属性的模型本身(用户),而不是使用id作为值。这与您已使用current_parent
而非current_parent_id
的名称相匹配。
{{view Ember.Select
contentBinding=parent
optionLabelPath="content.name"
value=current_parent}}
{{view Ember.Select
contentBinding=current_parent.children
value=current_child}}
在控制器上只需删除子属性。
希望这有帮助。