1

ビューモデルから kendoDatePicker 値をバインドしようとしています。

シンプルなオブザーバブルを使用すると、完全に機能します。html:

<input data-bind="kendoDatePicker: { value: myDate().selectedDate} " />

変更日

var DateModel = function (json) {
            var self = this;

self.selectedDate = ko.observable((!json || !json.Value) ? new Date('01/02/2015') : new Date(json.Value));

};


function ViewModel() {
    var self = this;

    // initializing  my object with empty string to avoid html databinding exceptions
    self.myDate= ko.observable(new DateModel(''));

    self.changeDate = function () {

    self.myDate(new DateModel({Value:"09/08/1935"}));
    };

    return self;
};

ko.applyBindings(new ViewModel());
<!-- REFERENCES
    http://cdn.kendostatic.com/2012.3.1315/styles/kendo.common.min.css
    http://cdn.kendostatic.com/2012.3.1315/styles/kendo.default.min.css 
    http://cdn.kendostatic.com/2012.3.1315/js/kendo.core.min.js
    http://cdn.kendostatic.com/2012.3.1315/js/kendo.web.min.js
    http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js
    http://rniemeyer.github.com/knockout-kendo/js/knockout-kendo.min.js
-->


<input data-bind="kendoDatePicker: { value: myDate().selectedDate} " />

 <button data-bind="click: changeDate">Change Date</button>
    <p data-bind="text: myDate().selectedDate">  </p>

デモ: http://jsfiddle.net/NGLEp/27/

しかし、json 値を持つ監視可能なモデルを使用すると (Web サービスの結果を解析しているように)、機能しません。

var DateModel = function (json) {
            var self = this;

self.selectedDate = ko.observable((!json || !json.Value) ? new Date('01/02/2015') : new Date(json.Value));

};


function ViewModel() {
    var self = this;

    // initializing  my object with empty string to avoid html databinding exceptions
    self.myDate= ko.observable(new DateModel(''));

    self.changeDate = function () {

    self.myDate().selectedDate(new Date());
    };

    return self;
};

ko.applyBindings(new ViewModel());
<!-- REFERENCES
    http://cdn.kendostatic.com/2012.3.1315/styles/kendo.common.min.css
    http://cdn.kendostatic.com/2012.3.1315/styles/kendo.default.min.css 
    http://cdn.kendostatic.com/2012.3.1315/js/kendo.core.min.js
    http://cdn.kendostatic.com/2012.3.1315/js/kendo.web.min.js
    http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1.js
    http://rniemeyer.github.com/knockout-kendo/js/knockout-kendo.min.js
-->


<input data-bind="kendoDatePicker: { value: myDate().selectedDate} " />

 <button data-bind="click: changeDate">Change Date</button>
    <p data-bind="text: myDate().selectedDate">  </p>

デモ: http://jsfiddle.net/NGLEp/26/

助けてください !

4

1 に答える 1

1

これ

self.myDate(new DateModel({Value:"09/08/1935"}));

selectedDatedatePicker コントロールにバインドされている古いインスタンスをオーバーライドします。メソッドを使用してsetter、最初にバインドされたオブザーバブルの値を設定できます。

self.setDate = function(json){
    self.selectedDate((!json || !json.Value) ? new Date('01/02/2015') : new Date(json.Value));
};

JsFiddle: http://jsfiddle.net/newuserjs/NGLEp/28/

于 2015-09-29T18:56:30.633 に答える