淘汰赛:我们不能使用observable而不是observablearray

时间:2014-08-21 07:39:21

标签: knockout.js observable ko.observablearray

假设JavaScript数组是特定类型的javascript对象(关联数组),我们只能使用ko.observable()而不是ko.observableArray()吗? 特别是如果我们不想观察数组属性的变化,比如长度......

作为一个例子,在这些基于任务列表的淘汰项目中,我们只需添加一个新任务,如下所示

tasklist[newtask.title]=newtask.description

在对象中(关联​​数组)。 这是对的吗?

这里是一个字符串示例http://jsfiddle.net/zfjqd6oa/

1 个答案:

答案 0 :(得分:0)

@origineil谢谢你的提议。是的,这正是我想要的。这样我就可以直接访问我的“特定项目”(作为关联数组)http://jsfiddle.net/xgup9Lsv/

var SimpleListModel = function () {
    var self = this;
    self.items = ko.observable({});
    self.itemToAdd = ko.observable("");
    self.addedItems = ko.computed(function(){
         return Object.keys(self.items())});
    self.addItem = function () {
        console.log("add")
        if (self.itemToAdd() != "") {
            var addition =  self.itemToAdd()
            self.items()[addition] = addition
            self.items.valueHasMutated()
        }
    } 
};

var model = new SimpleListModel()
ko.applyBindings(model);