【问题标题】:Convert Array into an Observable array将 Array 转换为 Observable 数组
【发布时间】:2014-10-24 07:07:39
【问题描述】:

我有一个 array,它来自我的 ModelView,我想将这个名称为 FilterListOptions 的数组转换为 observable type Array 吗?我怎样才能做到这一点?

【问题讨论】:

  • 你想用简单数组初始化 observable 数组吗?
  • 我想将模型发送给视图的数组转换为可观察数组。
  • 您可以将数组传递给 ko.observableArray 的调用以对其进行初始化。 ko.observableArray(arr)
  • 你能给我显式代码吗
  • var arr = ["Test", "Test2"]; var obsArr = ko.observableArray(arr);

标签: arrays knockout.js observablecollection observable ko.observablearray


【解决方案1】:

如果你想拥有完整的绑定,Knockout 模型应该有 observableArray(不是数组)。
但是如果你想要有限的绑定,你可以使用简单的对象:

来自价值绑定文档:
如果您使用 value 将表单元素链接到不可观察的属性(例如,普通的旧字符串或任意 JavaScript 表达式),KO 将执行以下操作:

  • 如果你引用一个简单的属性,也就是说,它只是一个普通的 属性,KO 将设置表单元素的初始 state 到属性值,当表单元素被编辑时,KO 会将更改写回您的属性。它无法检测到何时 属性发生变化(因为它是不可观察的),所以这只是一个 单向绑定。

    如果您引用的不是简单属性,例如, 函数调用或比较操作的结果,KO 将设置 将元素的初始状态设置为该值,但它不能 当用户编辑表单元素时写回任何更改。在 在这种情况下,它是一次性的值设置器,而不是持续的绑定 对变化做出反应。

要通过可观察数组简单地包装数组,请按以下方式进行:

var some_object = { myarray: [1,2,3] };
some_object.myarray = ko.observableArray(some_object.myarray);

【讨论】:

  • 您有什么问题吗?
  • 它必须工作......显然你的代码的其他部分有一些问题。所以也许最好提供更多细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2016-06-02
  • 2020-12-01
  • 2017-09-24
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
相关资源
最近更新 更多