【发布时间】:2012-06-27 04:12:17
【问题描述】:
您好,我有以下使用 knockout.js 的代码,
var allJobberDetailsArray = [];
getAllJobberDetailsArray();
function getAllJobberDetailsArray() {
$(function() {
$.ajax({
url: 'http://example.com',
type: 'GET',
data: {
request: "yes",
getAllJobberDetailsArray: "yes"
},
success: function(data) {
allJobberDetailsArray = data;
}
});
})
}
// ViewModel
function JobberCheckBoxListUserControlViewModel() {
var self = this;
self.allJobberDetailsArray = ko.observableArray(allJobberDetailsArray);
}
ko.applyBindings(new JobberCheckBoxListUserControlViewModel());
对 allJobberDetailsArray 的任何更改我想自动更新 UI 说添加更新或删除数组项我希望 UI 反映它。
我如何实现它?
编辑
var allJobberDetailsArray = ko.observableArray();
getAllJobberDetailsArray();
function getAllJobberDetailsArray() {
$(function() {
$.ajax({
url: 'http://example.com',
type: 'GET',
data: {
request: "yes",
getAllJobberDetailsArray: "yes"
},
success: function(data) {
allJobberDetailsArray.removeAll();
allJobberDetailsArray.push(data);
},
});
})
}
// ViewModel
function JobberCheckBoxListUserControlViewModel() {
var self = this;
self.allJobberDetailsArray = allJobberDetailsArray;// allJobberDetailsArray is now observable but any change to this doesn't reflect in the UI
}
var viewModel = new JobberCheckBoxListUserControlViewModel();
ko.applyBindings(viewModel);
在上面的代码中,我使数组本身可观察,如果数组有任何更改,我会尝试自动更新 UI 如何实现?
【问题讨论】:
-
allJobberDetailsArray初始化后如何更改? -
我正在修改成功:function(data) { allJobberDetailsArray = data; }
标签: data-binding view knockout.js viewmodel ko.observablearray