构建knockout viewmodel时获取对象初始化元素名称?

时间:2013-06-11 16:07:22

标签: javascript knockout.js

这可能只需要一般的javascript答案,而不是特定的敲门声,但我想知道是否有办法在我正在创建的对象初始值设定项中获取特定元素的名称。

例如,我有一个名为EmergentWorkConcerns的元素,它通过create函数初始化为一个可观察的数组,现在我传入一个字符串值“EmergentWorkConcerns”来构建模型。我发现自己重复了一堆不同类型的数组,如果可能的话,我想尽量减少魔术字符串的使用。

var ReportMapping = {
    EmergentWorkConcerns: {
        key: function (item) {
            return ko.utils.unwrapObservable(item.Id);
        },
        create: function (options) {
            return rowEntryModel(options.data, "EmergentWorkConcerns", options.parent);
        }
    },
    SomeOtherRowType: {
        key: function (item) {
            return ko.utils.unwrapObservable(item.Id);
        },
        create: function (options) {
            return rowEntryModel(options.data, "SomeOtherRowType", options.parent);
        }
    },
    AnotherRowType: ...
};

那么有什么方法可以从我的create function中引用EmergentWorkConcerns数组吗?

唯一暴露的参数是'options.parent'(ReportMapping),'options.data'(特定的Row)和'options.skip'。由于我们在调用函数时处于全局范围内,因此“this”指的是Window对象。

1 个答案:

答案 0 :(得分:0)

根据Knockout documentation

  

提供给创建回调的选项参数是一个JavaScript对象,其中包含:

     
      
  • 数据:包含此子项数据的JavaScript对象
  •   
  • parent :此子项所属的父对象或数组
  •   

options.parent应该为您提供您正在寻找的信息,它本身就是EmergentWorkConcerns的数组。