knockout.js - 将值分配给由字符串名称动态确定的可观察对象

标签 knockout.js variable-assignment observable

请问我有两个问题:

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

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

我试过这样做...我用过 data-bind="点击: loadData.bind($data, 'param1', 'param2')"然后我可以通过在我的 knockout View 模型中构造一个事件处理程序来获取那些 param1 和 param2 字符串值,该处理程序类似于:

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

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

最佳答案

如果您有父对象,则可以使用以下语法访问可观察对象:
viewModel[observableName]
并将值设置为:
viewModel[observableName](newValue)
这是一个示例,您可以从下拉列表中选择属性名称,然后相应地设置值,另一个示例将按钮直接绑定(bind)到设置可观察值/值:http://jsfiddle.net/rniemeyer/CTnUQ/

关于knockout.js - 将值分配给由字符串名称动态确定的可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8905052/

相关文章:

c# - 将Knockout与MVC4结合使用 : Use a button to toggle columns in a table.

node.js - 带 Sequelize 的加法和减法赋值运算符

javascript - 可观察实例在没有观察者(或订阅者?)的情况下发出

javascript - 根据属性值从多维 Javascript 数组中删除项目

javascript - 增强 Knockout 中的数组项上下文

javascript - KnockoutJS - 计算可观察对象和 js 对象

c - 在C中将直接字符串分配给char数组

c - 分配给结构中的静态数组时堆缓冲区溢出

angular - 如何使用 RxJS 和 Angular2 构建真正的可观察集合?