knockout.js - 函数调用后的data-bind自动更新

时间:2012-05-19 14:23:10

标签: data-binding knockout.js

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

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函数,它在unwrapped observable上工作,所以当我编辑模态中的值时,我无法看到更改实时写回主页面。

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

1 个答案:

答案 0 :(得分: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>

希望这有帮助。