使用 KNOCKOUTJS 设置动态可观察量
setting dynamic observables with knockoutjs
我正在尝试执行以下操作:
var viewModel = function() {
var self = this;
$.getJSON("/categories", function(data) {
$.each(data, function(index, cat) {
self[cat] = ko.observable(true);
});
});
}
传入的数据是类别名称的 JSON 数组 - 我已经在我的控制台日志中确认这些名称很好。
但是,在我的模板中,当我使用visible: viewModel[catname]
数据绑定时,没有任何反应。不过没有收到任何错误。有什么想法吗?
--
注意:
实际模板(轨道3):
<% @categories.each do |category| %>
<div data-bind="visible: viewModel[<%=category.name%>]">
<%= category.name %>
</div>
<% end %>
您的绑定应该只是visible: catname
。所有绑定都已经在viewModel
内"作用域",因此您无需在绑定中引用它。
在这里查看我的工作示例:http://jsfiddle.net/WpdMZ/。请注意,banana
和 pear
设置为 true
,因此它们对应的正方形是可见的,但apple
明确设置为 false
,因此其正方形不可见。
根据您的更新,您应该能够更改此行:
<div data-bind="visible: viewModel[<%=category.name%>]">
对此:
<div data-bind="visible: <%=category.name%>">
Jackie 是正确的,但你真的应该考虑一种更一致的方法。如果数据传入,请将其放置在挖空模型中,并使用挖空模板。下面是演示此方法的小提琴: http://jsfiddle.net/tyrsius/W6SXU/3/
相关文章:
- 如何使用javascript设置元素旋转和动态观察的动画
- 如何从具有动态可观察属性的淘汰对象中获取 JSON 字符串
- 设置多个观察程序以触发动态事件的角度替代解决方案 - 优化的观察者模式
- 动态地向可观察数组中的特定项添加绑定(例如hasfocus)
- AngularJS观察指令属性表达式,动态继承作用域
- 在小间隔内通过javascript更新css时,会出现断断续续的动态观察动画
- Three.js具有两个(切换)摄影机的动态观察控件
- 在处理中围绕三维球体动态观察
- 使用 KNOCKOUTJS 设置动态可观察量
- 通过动态插入的 DOM 元素进行 AJAX 调用,我是否必须使用突变观察器
- 滑块标题问题(动态观察滑块)
- 杜兰达尔多语言应用程序,页面/模块标题作为可观察的,动态更改文档.标题
- 动态观察控件.js导致模型在单击旋转时消失
- 运行时的EmberJS动态观察程序
- Angularjs-我们如何观察ngRepeat中的动态元素,以及动态ng模型名称和ANY更改时的过滤元素值
- js可观察对象的动态绑定
- Knockout:基于未知长度的数组动态创建可观察对象
- 突变观察器没有触发动态变化的回调
- 动态增长的observableArray包含可观察对象
- 动态访问knockoutjs可观察数组的属性