【问题标题】:Add item to Observable Array Knockout将项目添加到 Observable Array Knockout
【发布时间】:2013-11-10 10:42:49
【问题描述】:

我有 3 个 Observable 数组:

self.sets1 = ko.observableArray([
    ]);
self.sets2 = ko.observableArray([
    ]);
self.sets3 = ko.observableArray([
    ]);

我有一个构造函数来创建新记录。

function Record(name1){
    var self = this;
    self.name = ko.observable(name1);
    this.editing = ko.observable(false);
    this.edit = function() { this.editing(true) }
    self.remove = function(){
        self.remove(this);
    }

}

我有一个函数可以将记录添加到我的一个可观察数组中。 像这样:

this.addSet = function(){
        self.sets1.push(new Record($('input[id=weight1]').val()+' x '+$('input[id=reps1]').val()));
    };

在我看来,我这样称呼它:

<button id="btn1" data-bind="click: addSet">Add set</button>

但这仅适用于可观察数组sets1

我想要的是使这个函数具有通用性,因此它可以将记录添加到任何数组,例如取决于单击的buttonid。 但是我怎样才能获得所需的id 并将这个值传递给我的函数呢? 或者也许有更好的解决方案?

谢谢。

【问题讨论】:

    标签: javascript arrays mvvm knockout.js


    【解决方案1】:

    Knockout event bindings(如 click)提供了两个您可能会觉得有用的参数。

    function(data, event)
    

    这里,data 是与引发事件的元素关联的淘汰对象。 event 是包含事件数据的事件对象。 event.target 是对引发事件的 html 元素的引用。

    所以要查找被点击按钮的 ID,请执行以下操作:

    this.addSet = function(record, event){
        var id = $(event.target).attr('id');
        ...
    };
    

    【讨论】:

    • 感谢您的回答。有用。这就是我一直在寻找的。​​span>
    猜你喜欢
    • 2017-12-13
    • 2021-01-15
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2015-05-04
    • 2015-03-17
    相关资源
    最近更新 更多