首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从计算属性访问可忽略的可观察性给出了TypeError

从计算属性访问可忽略的可观察性给出了TypeError
EN

Stack Overflow用户
提问于 2015-02-02 12:14:35
回答 1查看 89关注 0票数 1

我确信这可能是一个基本问题,但我有以下ViewModel:

代码语言:javascript
复制
var viewModel = new EditorViewModel();
viewModel.addData(model);
ko.applyBindings(viewModel);

var EditorViewModel = function () {

    var self = this;
    self.addData = function (data) { .
        ko.mapping.fromJS(data, {}, self);
    };
    self.isUpdate = ko.computed(function () { return self.id() !== "0"; }, self);

};

ViewModel通过addData方法接收数据。该方法然后使用Knockout映射插件映射接收到的数据。有关信息,该数据是通过外部JQuery AJAX调用提供的。

问题是,我在Mozilla中得到了以下错误:

TypeError: self.Id is not a function

我不知道为什么计算属性会导致这个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-02 12:27:44

默认情况下,当您创建ko.computed时,会立即对其进行评估。

因此,在您的示例中,function () { return self.id() !== "0"; }在调用addData方法之前运行,因此您的id属性将丢失并得到异常。

要解决这个问题,您需要告诉KO推迟使用 option进行评估

代码语言:javascript
复制
 self.isUpdate = ko.computed(
     function () { return self.id() !== "0"; }, 
     self, { deferEvaluation: true });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28277563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档