我正在嘗試學習Knockoutjs,並且在添加和刪除對象到observablearray時遇到了一些問題。從Knockoutjs中的observablearray中刪除項目
我有以下視圖模型中,我從一個Web服務獲取的一些數據和填充一些HTML。這工作正常。但是,不起作用的是從observablearray中刪除項目,因爲它似乎是click-event不會調用removeEmployee。
function EmployeeViewModel(){
var self=this;
self.employees=ko.observableArray();
self.removeEmployee = function(item) {
self.employees.remove(item);
};
}
function success(data) {
EmployeeViewModel.employees=ko.mapping.fromJS(data);
ko.applyBindings(EmployeeViewModel);
};
ApiCall({
data: {
[get data]
},
onSuccess: function(data){success(data.result)}
});
和下面的HTML:
<div data-bind="foreach: employees">
<h2>Hello, <span data-bind="text: full_name"> </span>!</h2>
<button data-bind="click: $parent.removeEmployee">Remove</button>
</div>
我試圖在這裏建立的jsfiddle:http://jsfiddle.net/8yX5M/中刪除項目不工作。區別在於,在jsfiddle中,項目不是從外部源獲取的,而是使用removeEmployee而不是$ parent.removeEmployee。
任何想法爲什麼non-jsfiddle版本不工作?
感謝 托馬斯
我想你的代碼,但現在沒有數據是數據綁定。所以成功2低於數據綁定,但成功並沒有。 功能success2(數據){ \t EmployeeViewModel.employees = ko.mapping.fromJS(數據); ko.applyBindings(EmployeeViewModel); }; 函數成功(數據){ EmployeeViewModel.employees(ko.mapping.fromJS(數據)); ko.applyBindings(EmployeeViewModel); }; – ThomasD
順便說一句我試着在我的成功函數中設置調試器語句。當我按下「刪除」按鈕時,它不會被調用。所以我猜出於某種原因,這個事件並沒有被解僱 – ThomasD