我在我的网络应用程序中使用了Pager JS,Knockout和Jquery。这是代码
function ViewModel(){
var self = this;
self.interior = ko.observable();
self.interior.background = ko.computed(function() {
$.getJSON('/interiors', {interior_id: self.interior_id()}).success(function(data) {
return self.interior.background = data.interior.background_url;
});
}, this);
}
$(document).ready(function () {
pager.Href.hash = "#!/";
viewModel = new ViewModel();
pager.extendWithPage(viewModel);
ko.applyBindings(viewModel);
pager.start();
});
执行代码时出现以下错误:
Uncaught TypeError: Object #<ViewModel> has no method 'interior_id'
据我所知,该变量尚不存在,而且她没有方法。但是如何解决这个错误?
答案 0 :(得分:1)
如果稍后将interior_id
添加到您的viewmodel,那么您可以使用deferEvaluation
上的ko.computed
选项,以便在访问background
属性时仅评估其功能而不是在创建ViewModel
时:
self.interior.background = ko.computed(function() {
//do stuff
}, this, {deferEvaluation: true});