我正在努力让这个基本功能在 Ember 中运行。我如何通过观察通过另一个 Ember.Select 设置的另一个属性的计算属性填充 Ember.Select View 的选项?
这是我到目前为止所做的:
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']}]
显然这是行不通的。请解释我哪里出错了,以及实现它的可行方法是什么,我将不胜感激。
我正在使用以下库:
- Ember 1.4.0
- Ember 数据 1.0.0-beta.6
- Handlebars 1.3.0
提前致谢!
最佳答案
我认为您不需要派生属性 child。除了使用 id 作为值,您还可以使用模型本身(一个用户),它已经具有 children
的属性。这与您已经在使用 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}}
在 Controller 上只需删除子属性。
希望这对您有所帮助。
关于javascript - 如何根据另一个 Ember.Select 的选定选项通过计算属性填充 Ember.Select 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21959335/