0

我正在尝试执行以下操作:

var viewModel = function() {
    var self = this;

    $.getJSON("/categories", function(data) {
        $.each(data, function(index, cat) {
            self[cat] = ko.observable(true);
        });
    });
}

传入的数据是一个 JSON 类别名称数组 - 我在控制台日志中确认这些名称都很好。

但是,在我的模板中,当我使用visible: viewModel[catname]数据绑定时,什么也没有发生。虽然没有收到任何错误。有任何想法吗?

--

笔记:

实际模板(rails3):

<% @categories.each do |category| %> 
<div data-bind="visible: viewModel[<%=category.name%>]">
<%= category.name %>
</div> 
<% end %>
4

2 回答 2

1

您的绑定应该只是visible: catname. 所有绑定都已在 内“限定” viewModel,因此您无需在绑定中引用它。

在这里查看我的工作示例:http: //jsfiddle.net/WpdMZ/。注意bananapear被设置为true,所以它们对应的方块是可见的,但是apple被明确设置为false,所以它的方块是不可见的。


根据您的更新,您应该能够更改此行:

<div data-bind="visible: viewModel[<%=category.name%>]">

对此:

<div data-bind="visible: <%=category.name%>">
于 2012-06-23T00:57:14.407 回答
0

杰基是正确的,但你真的应该考虑一种更一致的方法。如果您的数据正在输入,请将其放入剔除模型中,并使用剔除模板。这是演示此方法的小提琴:http: //jsfiddle.net/tyrsius/W6SXU/3/

于 2012-06-23T01:31:28.910 回答