0
我想取消已籤根據結果每個複選框,但我得到一個錯誤,說明布爾不是一個函數取消選中複選框
視圖模型
function IndexVM() {
// Observable objects
this.Files = ko.observableArray([]);
this.CreateAML = function() {
var self = this;
for (var i = 0; i < self.Files().length; i++) {
if (self.Files()[i].Selected) {
$.ajax({
type: "POST",
url: "Home/CreateAML",
dataType: 'json',
data: "{ 'File': " + ko.toJSON(self.Files()[i]) + "}",
contentType: "application/json",
success: function (response) {
self.Files()[i].Selected(response.d); //this is where the error is thrown
}
}
};
};
更新:
function File() {
var self = this;
self.Selected = ko.observable(false);
// ...more properties
};
function IndexVM() {
var self = this;
// Observable objects
self.Path = ko.observable();
self.Files = ko.observableArray([]);
self.selectedFiles = ko.computed(function() {
return ko.utils.arrayFilter(self.Files(), function (file) {
return file.Selected();
});
});
this.CreateAML = function() {
var self = this;
ko.utils.arrayForEach(self.selectedFiles(), function (file) {
$.ajax({
url: "Home/CreateAMLTest",
contentType: "application/json; charset=utf-8",
data: ko.toJSON({
File: ko.toJS(file)
})
}).done(function (response) {
file.Selected(response.d);
}).fail(function (jqXHR, textStatus, errorThrown) {
// handle the error
});
});
};
};
非常感謝您的讚賞信息。我在這一行收到錯誤「未定義不是函數」:this.selectedFiles = ko.pureComputed(function(){ – Gericke
你使用的是什麼版本的knockout?如果它低於3.2,只需使用'computed()而不是'pureComputed()'。[Pure computeds](http://knockoutjs.com/documentation/computed-pure.html)已經在3.2中引入了,如果你不能使用它們,那麼不要介意和使用普通的。 – Tomalak
我正在使用3.0,所以我的理解是應該工作 – Gericke