0

我正在尝试将一个新对象推送到我的淘汰对象上的子对象数组中......并且我不断收到object is not a function错误消息。

我的脚本看起来像...

function PageViewModel() {

    var self = this;

    self.story = ko.observable();
    self.stories = ko.observableArray();

    self.addTask = function () {
         // this is where the error is occurring
         self.story().Tasks.push(new { IsDone: false, Description: 'Test description' });
    };

    self.getStories = function () {
        return $.ajax({
            type: 'GET',
            url: '@Url.Action("List", "Stories")',
            success: getStoriesSuccess
        });
    };

    function getStoriesSuccess(data) {
        var mapping = {};
        ko.mapping.fromJS(data.Stories, mapping, self.stories);
    }

    self.init = function () {
        self.getStories();
        ko.applyBindings(self);
    };
}

如果我在 Chrome 中查看我的淘汰赛上下文,我会看到我的Tasks属性为Array[0]. 所有非数组属性都可以正常工作。

希望我只是忽略了一些简单的事情!

4

1 回答 1

2

这不是淘汰赛的错误。只需在控制台中尝试,a = new {a: false, b: true}您就会收到这样的错误。

您必须设置:

self.story().Tasks.push(new Object({
    IsDone: false,
    Description: 'Test description'
)});
于 2013-07-25T05:17:22.647 回答