我使用Bootstrap作为Ember的模态。 我有一个项目列表
<script type="text/x-handlebars" data-template-name="settings/lists">
<table>
<tr><td>Item1<td><td><button {{action 'modal' 'Item1'}} >OpenModal</button></td></tr>
<tr><td>Item2<td><td><button {{action 'modal' 'Item2'}} >OpenModal</button></td></tr>
<table>
</script>
我想在每个项目上打开不同的模态框。模态需要模板的名称和控制器作为要打开的对象。我可以将控制器和模板的名称作为变量传递给动作。但我应该如何从名称中找到对象。 列表的控制器如下所示:
App.SettingsListsController = Ember.Controller.extend({
manualButtons: [
Ember.Object.create({title: 'Submit', clicked: "submitManual"}),
Ember.Object.create({title: 'Cancel', dismiss: 'modal'})
],
actions: {
submitManual: function() {
Bootstrap.NM.push('Modal destroyed!', 'success');
return Bootstrap.ModalManager.close('manualModal');
},
modal: function(){
Bootstrap.ModalManager.open('manualModal', 'Hello', 'hereshouldcomealatemplate', this.manualButtons, controllerasobject);
}
}
});
编辑:解决方案
我已经解决了这个问题:
<tr><td>Item1<td><td><button {{action 'modal' 'User' 'User'}} >OpenModal</button></td></tr>
modal: function(model, template){
var model = this.get('store').find(model);
this.set("model",model);
Bootstrap.ModalManager.open('manualModal', 'Hello', template, this.manualButtons, this);
}
我从列表中传递模型的名称和模板,我即时更改了SettingLists的模型。 也许有一个更好的解决方案,但它现在有效。