2

我有以下内容:

var CardViewModel = function (data) {
    ko.mapping.fromJS(data, {}, this);
    this.editing = ko.observable(false);
    this.edit = function() {
        debugger;
        this.editing(true);
    };

};


var mapping = {

    'cards': {
        create: function (options) {
            debugger;  // Doesn't ever reach this point unless I comment out the create method below
            return new CardViewModel(options.data);

        }
    },

    create: function(options) {
        //customize at the root level.  
        var innerModel = ko.mapping.fromJS(options.data);
        //debugger;
        innerModel.cardCount = ko.computed(function () {
            //debugger;
            return innerModel.cards().length;
        });

        return innerModel;
    }
};

var SetViewModel = ko.mapping.fromJS(setData, mapping);
debugger;
ko.applyBindings(SetViewModel);

当我运行它时,'cards' 方法永远不会被命中,因此 CardViewModel 中的那些编辑属性不可用。如果我注释掉“create”方法,我可以点击该调试器,但我需要两者。知道发生了什么吗?

4

1 回答 1

1

'cards'不是有效的 Javascript 变量名。尝试不带单引号的其他内容。

您还需要编辑CardViewModel代码,因为this内部函数指的是内部函数,并且不会在外部函数中看到可观察到的淘汰赛。

var CardViewModel = function (data) {
    var self = this;
    ko.mapping.fromJS(data, {}, this);
    this.editing = ko.observable(false);
    this.edit = function() {
        debugger;
        self.editing(true);
    };
};
于 2013-03-24T07:47:18.977 回答