knockout.js – 将值分配给由字符串名称动态确定的knockout observable

我有两个问题请:

我正在使用淘汰赛(我是KO noob sry)并且我想在点击事件中为特定的淘汰赛观察点分配一个值,但这应该仅在点击事件本身确定(并且我将传递给的值) data-bind = click)…可以这样做吗…我可以在其名称(字符串值)上获取knockout observable变量,而不必知道我将要分配一个值的哪个observable预先?

并且,其次不那么重要,如果存在这样的函数ko.ObservableByName(stringName),就可以以某种方式使用它并在页面加载时分配多个选择项的预选择.请问如何?

我试过这样做…我使用了data-bind =“click:loadData.bind($data,’param1′,’param2′)”然后我就能得到那些param1和param2字符串通过在我的knockout viewmodel中构造一个事件处理程序的值,该事务处理程序沿着以下方式行:

self.loadData = function (src, dest) {
    //dest is 'param1', src is 'param2', both are stings
    if (src == 'param1')
       self.p1observable($('#' + dest).val());
    else
       self.p2observable($('#' + dest).val());
}

我最大的问题是我必须用已经指定的p1 / p2 observables构造函数并在其中进行硬编码,但实际上我想让param1和param2用作某些名称或引用的名称.我的observable,我可以随意传递(除了要分配的值,或者更好的另一个observable我想将值复制到第一个),因此我可以在点击中分配传入的值函数直接调用我选择的一个observable(并没有大量这样的小函数)…

也许我会以错误的方式去做?也许我根本不应该传递字符串值…也许我应该尝试传入一个可观察对象,但是如何在数据绑定中做到这一点,你只是编写myViewModel.myObservable或类似的东西吗?

如果您有父对象,则可以使用以下语法访问observable:

视图模型[observableName]

并将值设置为:

视图模型[observableName](newValue)以

下面是一个示例,您可以从下拉列表中选择属性名称,然后相应地设置值,另一个按钮直接绑定到设置observable /值:http://jsfiddle.net/rniemeyer/CTnUQ/

翻译自:https://stackoverflow.com/questions/8905052/assigning-values-to-knockout-observable-dynamically-determined-by-string-name

转载注明原文:knockout.js – 将值分配给由字符串名称动态确定的knockout observable