0

フォームと Kendo MVVVM とデータソースを使用してサーバーに単純な ajax UPDATE を実装する方法に関する適切なドキュメントが見つかりません。

剣道MVVM

$(function() {

    var apiUrl = "http://a31262cd2f034ab8bcda22968021f3b8.cloudapp.net/api",            
        meetingDatasource = new kendo.data.DataSource({
            transport: {
                read: {
                    url: apiUrl + "/meetings/4",
                    dataType: "jsonp"
                },
                update: {
                    type: "PUT",
                    url: apiUrl + "/meetings",
                    contentType: "application/json; charset=utf-8",
                    dataType: 'json',
                },

                parameterMap: function(options, operation) {
                    return kendo.stringify(options);
                }
            },
            batch: true,
            change: function() {
            },
            schema: {
                model: {
                    id: "Id",
                    fields: {
                        Title: { editable: true },
                        StartTime: { type: "date" },
                        EndTime: { type: "date" }
                    }
                }
            }
        });

    meetingDatasource.fetch(function () {

        var viewModel = kendo.observable({
            description: result.Description,
            title: result.Title,
            venue: result.Location,
            startDate: result.StartTime,
            endDate: result.EndTime,
            saveChanges: function (e) {

                //im not sure with this line
                this.set("Title", this.Title);
                meetingDatasource.sync();

                e.preventDefault();

            }
        });

        kendo.bind($("#view"), viewModel);
    });

});

UI

<ul class="forms"  id="ul-meeting">
            <li>
                <label for="title" >Title:</label> 
                <input data-bind="value: title" class="k-textbox" style="width:350px;"/>
            </li>
            <li>
                <label for="description" >Description:</label> 
                <textarea data-bind="value: description"  id="description" rows="6" cols="80" class="k-textbox" style="width:350px;"></textarea>
            </li>
            <li>    
                <label for="location">Venue:</label> 
                <textarea  data-bind="value: venue" id="location" rows="4" cols="80" class="k-textbox" style="width:350px;"></textarea>
            </li>
            <li>
                <p>
                    <label for="start-datetime">Start:</label> 
                    <input  data-bind="value: startDate" id="start-datetime" style="width:200px;" />
                </p>
                <p>
                    <label for="end-datetime">Finish:</label> 
                    <input data-bind="value: endDate"  id="end-datetime" style="width:200px;" />
                </p>
            </li>
        </ul>

問題は、TRANSPORT READ がトリガーされますが、明示的に Datasource.sync() を呼び出しても TRANSPORT UPDATE がトリガーされないことです。私がここに欠けているものはありますか?

4

1 に答える 1

2

あなたのコードは完全ではありません (トリガーの内容resultやトリガー方法を示していませんsaveChangesが、問題は DataSource ( ) のコンテンツを更新していないことですmeetingDataSource)。

フィールドを and にコピーするコードでは、. あなたがするとき、その文脈ではそうではありません。あなたが電話するとき、あなたは何もしていません。resultObservableObjectDataSourcethis.setthisDataSourcesync

やってみてください:

meetingDatasource.data()[0].set(`Title`, this.Title);
meetingDatasource.sync();

これでうまくいくはずです!

于 2013-08-12T10:36:31.443 に答える