将新对象推入敲除对象的子属性数组中

时间:2013-07-25 03:35:24

标签: knockout.js knockout-mapping-plugin

我正在尝试将新对象推送到我的knockout对象上的子对象数组中...并且我一直收到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]。所有非Array属性都可以正常工作。

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

1 个答案:

答案 0 :(得分:2)

这不是淘汰赛的错误。只需在控制台a = new {a: false, b: true}中尝试即可获得此类错误。

您必须设置:

self.story().Tasks.push(new Object({
    IsDone: false,
    Description: 'Test description'
)});