【发布时间】:2017-02-14 08:21:16
【问题描述】:
在我的视图模型中,我声明了一个名为“MappedItem”的可观察属性:
var MyViewModel = function () {
var $scope = this;
...
$scope.MappedItem = ko.observable();
...
我需要映射一个名为“item”的对象,它有几个属性。我在映射的 observable 中只需要其中三个。所以,这就是我正在尝试的:
var mapping = {'include': ["recid", "Program", "Station"]};
$scope.MappedItem = ko.mapping.fromJS(item, mapping);
这可行,但我的映射规则被忽略了,我最终得到“MappedItem”有很多无用的可观察属性。
为了得到我想要的,我必须在映射选项对象的 'ignore' 属性中显式声明我不想映射的每个属性:
var mapping = {
'ignore': ["AdLength", "Affiliate", ... (MANY OTHER PROPERTIES MORE) ],
'include': ["recid", "Program", "Station"]
};
$scope.MappedItem = ko.mapping.fromJS(item, mapping);
我尝试过的另一种方法:
ko.mapping.fromJS(item, mapping, $scope.MappedItem);
但这根本不会将任何“item”属性映射到“MappedItem”。
难道我不能只使用“包含”来映射所需的属性,而不必在“忽略”选项中明确声明它们吗?
【问题讨论】:
标签: knockout.js knockout-mapping-plugin