0

我有一个案例,我将数据绑定到列表中模型内的日期字段:

function Model(data) {
    var self = this;
    ko.mapping.fromJS(data, {}, this);
}

<div id="fieldOnPage" data-bind="text: formatDate(myDateField())"></div>

然后,在模式中,我显示相同的日期字段,以便可以对其进行编辑:

<div id="fieldInModal" data-bind="text: formatDate(myDateField())"></div>

但是,由于我调用 formatDate 函数对展开的可观察对象执行其工作,因此当我在模式中编辑值时,我无法看到更改被实时写回主页。

另一个警告是我使用了 ko.mapping 插件,所以我不一定在 myDateField 上有一个特定的 ko.computed 字段。这可能与这样的外部功能有关吗?如果没有,如果我必须专门覆盖 myDateField 绑定,我将如何使用 ko.computed 呢?

4

1 回答 1

1

你可以做类似的事情

function Model(data) {
    var self = this;
    ko.mapping.fromJS(data, {}, this);

    this.formattedDate = ko.computed(function () {
       return formatDate(ko.utils.unwrapObservable(self.myDateField));
    });
}

绑定到格式化的日期

<div id="fieldInModal" data-bind="text: formattedDate"></div>

希望这可以帮助。

于 2012-05-19T17:08:41.147 回答