编辑看起来我现在从服务器加载了它。如果有人发现任何问题,很想听听他们。
有一些问题让淘汰映射插件正常工作。我可以使用静态数据,但没有问题,请参阅http://jsfiddle.net/RH9wQ/
当我尝试从服务器加载数据时,它似乎不起作用。下面是我正在使用的简单代码。 jsfiddle中的数据是从我的服务器返回的确切数据。我错过了一些完全明显的东西吗?
我正在做的是根据点击的alpha按钮加载不同的药物。因此,单击“y”并获取以y开头的药物列表,单击“z”并获取以z开头的药物列表。单击按钮/加载数据时,我想用来自服务器的内容替换我的viewModel数据。
另外,请注意jsfiddle页面上的控制台,数据看起来很好(8个数组元素和count = 8),但请注意viewModel的控制台,preferredDrugs和count是不同的,有人知道这是为什么吗?
$(function() {
$('.load').click(function() {
var $letter = $(this).attr('value');
//show spinner
$('#loading').show();
//load in drug list data
$.getJSON('/PreferredDrugList/service/preferredDrugs/' + $letter, function(data) {
//hide spinner
$('#loading').hide();
console.log(data);
//create observable properties for each of the properties on data
ko.mapping.fromJS(data, viewModel);
console.log(viewModel);
});
});
});//end ondomready
//default data
var data = {
preferredDrugs: [],
count: 0
};
var viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
答案 0 :(得分:5)
使用ko.mapping
更新现有视图模型时,您还可以尝试:
ko.mapping.fromJS(data, {}, viewModel);
..代替..
ko.mapping.fromJS(data, viewModel);
另外,请注意jsfiddle页面上的控制台,数据看起来很好(8个数组 elements和count = 8),但请注意viewModel的控制台, preferredDrugs和count是不同的,任何人都知道这是为什么?
是的,原始首选药物是正常阵列,而新首选药物是可观察阵列。 如果您尝试直接访问,则可观察数组看起来像一个空数组。但是,可观察性是功能,需要对其进行处理。
因此...
console.log(myViewModel.preferredDrugs);
...返回一个空数组,而......
console.log(myViewModel.preferredDrugs());
...返回实际的数组。