我可能会遗漏一些非常简单的东西,但任何人都可以指出我在这里做错了吗?
提前多多感谢。<div data-bind="foreach: agencies">
<div data-bind="text:name"></div>
<div data-bind="text:email"></div>
<button data-bind="click: removeAgency">remove</button>
</div>
<script type="text/javascript">
var agency = [{
name : ko.observable('a'),
email : ko.observable('b')
}, {
name: ko.observable('c'),
email: ko.observable('d')
}];
var vm = {
agencies: ko.observableArray(agency),
removeAgency: function(agency) {
this.agencies.remove(agency);
}
};
ko.applyBindings(vm);
</script>
这是我得到的错误:未捕获错误:无法解析绑定。 消息:ReferenceError:未定义removeAgency; 绑定值:单击:removeAgency
答案 0 :(得分:4)
您绑定到该html中的代理商,但您的方法在您的viewmodel上。尝试类似:
<button data-bind="click: $parent.removeAgency">remove</button>
您可能需要重新设置您的虚拟机以使范围正确:
var ViewModel = function(){
var self = this;
self.agencies = ko.observableArray(agency),
self.removeAgency = function(agency) {
self.agencies.remove(agency);
}
};
var vm = new ViewModel();
我仍然对范围感到困惑,我不得不承认,但试一试,看看会发生什么。
答案 1 :(得分:0)
工作示例:
http://jsfiddle.net/marko4286/7RDc3/2034/
阅读文档http://knockoutjs.com/documentation/foreach-binding.html