我正在尝试生成一个选择输入并将所选对象传递给视图上的change事件.ember联系人示例使用a <ul>但是选择视图需要在每个视图之外,否则甚至不会触发更改.
这是js的视图:
App.SelectView = Ember.View.extend({
change: function(e) {
//event for select
var content = this.get('content');
console.log(content);
App.selectedWidgetController.set('content', [content]);
},
click: function(e) {
//event for ul
var content = this.get('content');
console.log(content);
App.selectedWidgetController.set('content', [content]);
}
});
Run Code Online (Sandbox Code Playgroud)
在ul从示例工作:
<ul>
{{#each App.widgetController.content}}
{{#view App.SelectView contentBinding="this"}}
<li>{{content.name}}</li>
{{/view}}
{{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)
但是,如果我直接替换html,则不会触发更改事件(这是有道理的)
<select>
{{#each App.widgetController.content}}
{{#view App.SelectView contentBinding="this"}}
<option>{{content.name}}</option>
{{/view}}
{{/each}}
</select>
Run Code Online (Sandbox Code Playgroud)
所以我想select必须包含在视图中..在这种情况下我如何传递相关对象?...这段代码导致整个数组被传递:
{{#view App.select_view contentBinding="App.widgetController.content"}}
<select>
{{#each App.widgetController.content}}
<option>{{name}}</option>
{{/each}}
</select>
{{/view}}
Run Code Online (Sandbox Code Playgroud) 我正在使用Ember和Ember数据从REST API加载几百个对象,使用自定义适配器中的findAll调用.我有一个引用findAll的ArrayController.content,然后使用最近添加的Ember.Select在select小部件/下拉菜单中显示对象.一旦完全呈现所有对象(每个对象都是select的选项),我需要在select小部件上运行一个函数 - 特别是Chosen.js库.
因为处理select中的几百个对象需要一些时间(2-4秒),所以在事件Ember.Select.didInsertElement和Ember.ArrayController.contentDidChange上使用回调不太有用; 他们都很快开火.那么是否可以使用另一种事件或另一种方法呢?