我正在动态构建一些选择控件。我想知道选项何时发生了变化,所以我正在做以下事情:
我的想法是在selections
对象上动态创建属性,用于保存选定的值。
//Add observer
Ember.defineProperty(selections, camelizedModelClass, null);
selections.addObserver(camelizedModelClass, self, 'selectionChanged');
这是选择发生变化时应该调用的函数。
selectionChanged : function(sender, key, value, rev) {
console.log('worked!');
},
在我的模板中,我创建了Ember.Select' s。如下。
{{#each control in controls}}
<div {{bind-attr class=":form-group control.width"}}>
<label for="exampleInputPassword1">{{control.label}}</label>
{{view "select"
content=control.content
selection=control.selection
optionValuePath=control.optionValuePath
optionLabelPath=control.optionLabelPath
class = "form-control"
prompt=control.prompt
}}
<p class="help-block"></p>
</div>
{{/each}}
controls
数组中的每个控件都具有以下属性。
selection: 'selections.' + camelizedModelClass,
永远不会调用观察者方法,但是,如果我手动输入选择内容,实际上是调用它。
{{view "select"
content=control.content
selection=selections.manager <-------- manually specifying the selection
optionValuePath=control.optionValuePath
optionLabelPath=control.optionLabelPath
class = "form-control"
prompt=control.prompt
}}
为什么这不起作用?另一个奇怪的事情是,如果我将{{control.selection}}
放入我的车把模板中,我可以看到第一种方法的模型正在改变,而第二种方法却没有。
答案 0 :(得分:0)
尝试将Ember.SelectView selection
属性更改为value
。
{{view 'select' value=selections.manager}}
这是一个例子。