1

我在我的 Web 应用程序中使用 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' 

我知道这个变量还不存在,她也没有方法。但是如何绕过这个错误呢?

4

1 回答 1

1

如果interior_id稍后将其添加到您的视图模型中,那么您可以deferEvaluation在您的选项上使用该选项,因此它仅在访问属性ko.computed时评估其功能,而不是在创建时评估其功能:backgroundViewModel

self.interior.background = ko.computed(function() {
    //do stuff
}, this, {deferEvaluation: true});
于 2013-10-17T15:37:48.230 回答