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 に答える