当模型的映射写为函数时,knockout js`create callback`与映射插件一起使用

时间:2014-12-21 22:40:01

标签: knockout.js knockout-mapping-plugin

我有一个正在运行的jsfiddle here,它正是我到目前为止所做的,即列出一堆联系人(使用映射插件)并扩展每个联系人'带有一个额外的可观察isEnabled,用于控制每行显示的输入框的(启用/禁用)状态。

然而,我理解的是如何将contactsMapping编码为函数。我目前在哪里:

var contactsMapping = {
    'contacts': {
        key: function (item) {
            return ko.utils.unwrapObservable(item.id);
        },
        create: function(options) {
           return new contactModel(options.data);
        }
    },
};

我想使用一个函数(为了更清晰地访问this等,如上所述):

var contactsMapping = function() {
    var self = this;

    // self.contacts = [what goes here??] 
};
这个模型中的

contacts以某种方式由映射插件转录为可观察数组,但是,如何正确地注入keycreate函数?

感谢您提供任何帮助/指示...

1 个答案:

答案 0 :(得分:0)

映射函数接受第三个参数,该参数是映射值被注入(扩展到)的对象。因此,如果您想延伸到self,请将其传递给。{/ p>

var contactsMapping = function (data) {
    var mappingOptions = {
        'contacts': {
            key: function (item) {
                return ko.utils.unwrapObservable(item.id);
            },
            create: function(options) {
                return new contactModel(options.data);
            }
        },
    };
    ko.mapping.fromJS(data, mappingOptions, this);
};

fiddle