繁体   English   中英

Knockback Collection Observable抛出“无法读取未定义的属性'bind'”错误

[英]Knockback Collection Observable throws “Cannot read property 'bind' of undefined” error

我正在尝试制作一个简单的viewmodel以使用Knockback显示对象列表。 视图模型非常简单,如下所示:

var objectives_collection = new ObjectiveCollection();
objectives_collection.fetch();

var view_model = kb.ViewModel.extend({
    objectives: kb.CollectionObservable(objectives_collection),
    constructor: function() {
        _this = this;
        kb.ViewModel.prototype.constructor.call(this, model = new Objective(), {});
        console.log(this.objectives);
        return this;
    },
    addObjective : function() {
        var objective_model = new Objective({name: "New Objective", descriptor: 'Add description here'});
        this.objectives.add(objective_model);
        objective_model.save();
        console.log(objectives);
    },
    edit: function() {
        console.log('Edit');
    },
    remove: function(objective) {
        self.objectives.remove(objective);
    }

});

但是,现在,视图模型的第一行(kb.CollectionObservable(objectives_collection))使我感到悲伤。 它正在调用Underscore.js的绑定函数并尝试设置onCollectionChange侦听器,但Knockback的代码行试图绑定一个未定义的函数:

this.__kb._onCollectionChange = _.bind(this._onCollectionChange, this);

这里this._onCollectionChange显然是未定义的。 我不太确定该怎么做。 我在这里做错了什么?

Knockback.js中有两个函数用于创建CollectionObservable。

一个功能是一个叫做kb.CollectionObservable构造,另一种是被称为kb.collectionObservable的工厂方法。 注意区分大小写的区别吗?

使用构造函数时,将其称为:

var myCollection = new kb.CollectionObservable(...);

在工厂中,您正在调用一个为您使用new关键字的方法。 因此,您将输入:

var myCollection = kb.collectionObservable(...);

希望能清除它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM