0

ビューモデルに配列があります。この配列のアイテムは、2つのプロパティを持つPersonのオブジェクトです。これをテンプレートにバインドすると問題ありません。しかし、プロパティの1つの状態を変更すると、UIに反映されません。

私は何を間違えましたか?

<script type="text/html" id="person-template">
    <p>Name: <span data-bind="text: name"></span></p>
    <p>
        Is On Facebook ?
        <input type="checkbox" data-bind="checked: IsOnFacebook" />
    </p>
</script>

<script type="text/javascript">
    var ppl = [
            { name: 'Pouyan', IsOnFacebook: ko.observable(true) },
            { name: 'Reza', IsOnFacebook: ko.observable(false) }
    ];
    function MyViewModel() {
        this.people = ko.observableArray(ppl),
        this.toggle = function () {
            for (var i = 0; i < ppl.length; i++) {
                ppl[i].IsOnFacebook = false;
            }
        }
    }
    ko.applyBindings(new MyViewModel());
</script>

ボタンを押すと、People.IsOnFacebookプロパティを変更します。変更は正常に行われますが、UIは表示されません。

4

1 に答える 1

5

関数のように呼び出す必要があります。好き:

ppl[i].IsOnFacebook(false);

これko.observable()は、が関数を返すためです。これは、もう呼び出すプロパティではなく、関数呼び出しです。そのため、バックグラウンドでUIが更新されます。観察可能なプロパティを取得するため。関数呼び出しも使用する必要があります。

このチュートリアルを参照してください:http://learn.knockoutjs.com/#/? tutorial = intro

于 2013-01-27T11:29:54.193 に答える