9

请问我有两个问题:

我正在使用淘汰赛(我是一个 KO noob sry),我想为点击事件时可观察到的特定淘汰赛分配一个值,但这应该只取决于点击事件本身(以及我将传递给的值) data-bind=click)...可以完成吗...我可以仅根据其名称(字符串值)获取淘汰赛可观察变量,而不必知道我将要分配哪个可观察变量预先?

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

我试过这样做......我使用了data-bind="click: loadData.bind($data, ' param1 ', ' param2 ')"然后我能够得到那些param1param2字符串通过在我的淘汰视图模型中构造一个事件处理程序来获取值,该处理程序类似于:

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 可观察对象来构造函数,但实际上我想让 param1 和 param2 用作名称或按某些名称的引用我的可观察对象,然后我可以随意传递(除了要分配的值,或者更好的另一个可观察对象,我想将值从第一个复制到第一个),因此我可以在点击中分配传入的值函数直接调用我选择的可观察对象(并且没有大量这样的小函数)......

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

4

1 回答 1

16

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

viewModel[observableName]

并将值设置为:

viewModel[observableName](newValue)

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

于 2012-01-18T14:49:37.737 回答