使用 Knockoutjs 进行数据绑定嵌套 JSON
我有一个包含数组数组的 JSON 结构。我有一个视图模型,它使用包含 Observable 数据的 Observable 数组定义对象,然后将这些对象嵌套在其他数组和 Observable 中。
加载包含嵌套 Observable 数组(包含 Observable 数据)的视图模型的最简单方法是什么?
I have a JSON structure containing arrays of arrays. I have a View Model that defines objects with Observable Arrays containing Observable data, and then nesting those objects in other Arrays and Observables.
What is the simplest way to load a View Model containing nested Observable Arrays containing Observable data?
Example:
http://jsfiddle.net/uyQb6/1/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用映射插件进行探索,但选项对象会变得复杂,因为每个创建回调都必须再次调用映射插件,然后添加任何依赖的Observables,并且使所有属性都可观察会更容易。
不过,您可以坚持使用构造函数,并使用诸如 ko.utils.arrayMap 之类的东西,它只是一个简单的函数,它循环遍历数组并将每个项目重新映射到从您提供的函数返回的任何内容。
以下是添加了 ko.utils.arrayMap 调用的示例:
http://jsfiddle.net/rniemeyer/VUfSS/
You could explore using the mapping plugin, but the options object would get complicated as each create callback would have to call the mapping plugin again and then add any dependentObservables and it would be easier to make all of the properties observables.
You can stick with your constructors though and use something like
ko.utils.arrayMap
, which is just a simple function that loops through an array and remaps each item to whatever you return from the function that you supply.Here is your sample with the
ko.utils.arrayMap
calls added:http://jsfiddle.net/rniemeyer/VUfSS/
更新:如果您的嵌套列表取决于主列表,这就是您的解决方案,否则 @rp-niemeyer 解决方案是最好的。
如果我做对了,可以说您有这样的 JSON 数据:
这将成为你的 viewModel:
我没有测试它,但我确信你已经明白了。
Update: If your nested list is depend on main list this is your solution, otherwise @rp-niemeyer solution is the best.
If I got it right, lets say you have JSON data like this:
This will be your viewModel:
I didn't test it but I'm sure you've got the idea.