Durandal小部件不更新viewmodel

时间:2014-03-14 09:12:29

标签: knockout.js durandal knockout-2.0 durandal-2.0

我用durandal写温泉网站。在我使用widget之前,每件事都没问题。小部件不会更新我的模型。

我的小部件视图模型:

define([], function () {
var ctor = function () {
};

ctor.prototype.activate = function (settings) {
    this.settings = settings;
};

ctor.prototype.attached = function () {
    $('.datepicker').datepicker({
        clearBtn: true,
        todayBtn: true,
    });
};


return ctor;
})

我的小部件视图:

<div >
<input class="datepicker" data-bind="value: settings.datevalue"/>
</div>

然后我将我的小部件更改为此,这是有效的。有更好的方法吗?

我的小部件视图模型:

define([], function () {
var ctor = function () {
};

ctor.prototype.activate = function (settings) {
    this.settings = settings;
    var data = settings.data;
    var property = settings.property;
    this.datevalue = ko.computed({
        read: function() {
            return data[property];
        },
        write: function(value) {
            data[property] = value;
        }
    });
};

ctor.prototype.attached = function () {
    $('.datepicker').datepicker({
        clearBtn: true,
        todayBtn: true,
    });
};


return ctor;
})

我的小部件视图:

<div >
<input class="datepicker" data-bind="value: datevalue"/>
</div>

我的观点模型:

define(['services/datacontext'],
    function (datacontext) {
        var myViewModel = ko.observable();
        var activate = function (id) {
            if (id) {
            datacontext.load(id).done(function (result) {
                myViewModel (result);
            });
        }

    return {
            activate: activate,
            myViewModel: myViewModel
    }
});

我的观点:

<section data-bind="with: myViewModel">
    <address>
        <label for="code">Code:</label>
        <input data-bind="value: code" />
    </address>
    <div>
        <label for="expireDate">Expire Date :</label>
        <span id="expireDate" data-bind="datepicker: { data: $data, prop:'expireDate'}"/>
    </div>

ko.mapping.fromJS解决了我的问题并且不需要这个改变。

0 个答案:

没有答案