1

次のようなリストビューを使用してアイテムのリストを表示しようとしています:

<div data-role="view" data-model="my_model">
    <ul data-role="listview" data-bind="source: ds" data-template="list-tmpl"></ul>
</div>

viewと呼ばれるモデルを使用している場所my_modelと、にバインドされているlistview場所があります。sourceds

私のモデルは次のようなものです:

var my_model = kendo.observable({
    ds: new kendo.data.DataSource({
        transport: {
            read: readData,
            update: updateData,
            create: updateData,
            remove: updateData
        },
        pageSize: 10,
        schema: {
            model: {
                id: "id",
                fields: {
                    id: { type: "number" },
                    name: { type: "string" },
                    active: { type: "boolean" }
                }
            }
        }
    })
});

各項目にはidname(つまりstring) およびboolean名前付きが含まれactiveます。

各要素のレンダリングに使用されるテンプレートは次のとおりです。

<script id="list-tmpl" type="text/kendo-tmpl">
    <span>#= name # : #= active #</span>
    <input data-role="switch" data-bind="checked: active"/>
</script>

nameと (デバッグ用) の値を表示する場所active。さらに、switchバインドをにレンダリングしますactive

次のように表示されます。

ここに画像の説明を入力

観察された問題は次のとおりです。

  1. activeスイッチをクリックすると、 の横の の値がname(予想どおり) その値を変更することがわかりますが、別のスイッチを選択すると、値 ( の横でnameも 内でもDataSourceありません) は更新されません ( の値にもかかわらずスイッチは正しく更新されます)。
  2. DataSourceのupdateハンドラーは呼び出されません (最初に選択されたスイッチについても呼び出されず、最初に切り替えられたスイッチの DataSource が更新されたにもかかわらず)。

JSFiddle で確認できます: http://jsfiddle.net/OnaBai/K7wEC/

updateDataSource が更新され、ハンドラーが呼び出されるようにするにはどうすればよいですか?

4

1 に答える 1

1

わかりました、解決策は非常に簡単でした: 定義でに設定しautoSyncます。trueDataSource

var my_model = kendo.observable({
    ds: new kendo.data.DataSource({
        transport: {
            read: readData,
            update: updateData,
            create: updateData,
            remove: updateData
        },
        autoSync: true,
        pageSize: 10,
        schema: {
            model: {
                id: "id",
                fields: {
                    id: { type: "number" },
                    name: { type: "string" },
                    active: { type: "boolean" }
                }
            }
        }
    })
});

ここで変更された JSFiddle を参照してください: http://jsfiddle.net/OnaBai/K7wEC/1/

于 2014-06-06T21:22:42.600 に答える