小编Chr*_*nce的帖子

在KnockoutJS中,原型上的计算可观察量是否可行?

我有一系列从服务中回来的物品.我正在尝试为每个Item实例定义一个计算的observable,所以我的直觉告诉我把它放在原型上.

计算的observable的一种情况:系统计算点,但用户可以选择覆盖计算的值.我需要保持计算值可用,以防用户删除覆盖.我还需要合并用户指定和计算的点,并将总计加起来.

我正在使用映射来执行以下操作:

var itemsViewModel;
var items = [
    { 'PointsCalculated' : 5.1 },
    { 'PointsCalculated' : 2.37, 'PointsFromUser' : 3 }
];

var mapping = {
    'Items' : {
        create : function(options) {
            return new Item(options.data);
        }
    }
};

var Item = function(data) {
    var item = this;
    ko.mapping.fromJS(data, mapping, item);
};

Item.prototype.Points = function () {
    var item = this;
    return ko.computed(function () {
        // PointsFromUser may be 0, so only ignore it if the value is undefined/null …
Run Code Online (Sandbox Code Playgroud)

knockout-mapping-plugin knockout.js

6
推荐指数
1
解决办法
3538
查看次数