针对我的控制器,我有一个包含一系列项目的项目,我想显示一个列表并有一个删除项目的操作。
已从ember.js 集合视图中的类似问题项特定操作中获取大部分代码。大多数工作,地址显示工作和项目渲染,但是该操作似乎没有正确的上下文,因此不执行删除操作。
控制器:
App.EditAddressesController = Em.ArrayController.extend({
temporaryUser: {
firstName: 'Ben',
lastName: 'MacGowan',
addresses: [{
number: '24',
city: 'London'
etc...
}, {
number: '23',
city: 'London'
etc...
}]
}
});
temporaryUser 是一个 EmberObject(基于 User 模型),address 数组中的每个项目都是另一个 EmberObject(基于 Address 模型)——这只是为了显示代码而进行了简化。
父视图:
{{#each address in temporaryUser.addresses}}
{{#view App.AddressView addressBinding="this"}}
{{{address.display}}}
<a {{action deleteAddress target="view"}} class="delete">Delete</a>
{{/view}}
{{/each}}
应用程序地址视图:
App.AddressView = Ember.View.extend({
tagName: 'li',
address: null,
deleteAddress: function() {
var address = this.get('address'),
controller = this.get('controller'),
currentAddresses = controller.get('temporaryUser.addresses');
if(currentAddresses.length > 1) {
$.each(currentAddresses, function(i) {
if(currentAddresses[i] == address) {
currentAddresses.splice(i, 1);
}
});
}
else {
//Throw error saying user must have at least 1 address
}
}
});