使用WebApi进行KnockoutJS。当我尝试使用自定义绑定时,我无法将绑定数据传递到自定义绑定函数中。
我现在已经敲了两天,肯定在这里错过了什么。
非常感谢任何指南,文章或示例代码。非常感谢。
<script>
function ViewModel() {
var self = this;
self.items = ko.observableArray();
// This is getting data, and tested have data returned.
var baseUri = 'api/items';
$.getJSON(baseUri, self.items);
}
$(document).ready(function () {
ko.bindingHandlers.testBinding = {
init: function (element, valueAccessor) {
var value = valueAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
// This is always 0.
alert(valueUnwrapped.length);
},
update: function (element, valueAccessor) {
var value = valueAccessor();
var valueUnwrapped = ko.utils.unwrapObservable(value);
// This is always 0.
alert(valueUnwrapped.length);
}
};
// Binding to Web Api data.
ko.applyBindings(new ViewModel());
// Test it with static data, and custom binding works. The length displayed 2.
//var viewModel = {
// items: ko.observableArray([{name: "Bob1"}, {name: "Bob2"}])
//};
//ko.applyBindings(viewModel);
});
</script>
<div data-bind="testBinding: items"></div>
答案 0 :(得分:1)
init将始终为零,因为数据填充为异步(因此,当您对数组进行数据绑定时将为空)。
更新应为零一次,然后下次返回正确的长度..
Test this little fiddle