有一个可观察的内容与另一个与淘汰赛相同的内容

时间:2013-04-24 07:33:24

标签: knockout.js

我有一个名为packing的可观察对象,它包含许多属性。其中一个是名为isotopes

的observableArray
packing
 - description
 - type
 - ...
 - isotopes
    - name
    - weight

我想创建一个单独的observable,其内容与packing.isotopes相同。这是动态的,因此无论何时从packing.isotopes添加/删除某些内容,都应在mycopy内添加/删除。

我已经尝试过了:

var mycopy = ko.computed(function () { return packing.isotopes; });

但它不起作用。 mycopy 未定义

有什么想法吗?

感谢。


更新

以下是我的代码:

define(function (require) {
    ...
    var mycopy = ko.computed(function () { return packing.isotopes; });

    var activate = function (routeData) {
        var idTran = parseInt(routeData.idTran);
        var idPack = parseInt(routeData.idPack);

        var promise = (idPack == -1) ? // -1 --> create a new empty itinerary
                        ctxTransport.createPackingDetailTransport(idTran, packing) : 
                        ctxTransport.getPackingById(idPack, packing); 

        return promise
              .then(ctxTransport.getTransportById(idTran, transport))
              .fail(somethingWrong); 

        function somethingWrong(error) {
            var msg = 'Error retreiving data. ' + error.message;
            logError(msg, error);
            throw error;
        }
    }

    var vm = {
        activate: activate,
        canDeactivate: canDeactivate,
        resource: resource,
        transport: transport,
        packing: packing,
        mycopy: mycopy,
        ...
    };
}

1 个答案:

答案 0 :(得分:0)

计算的observables应该跟踪其他可观察对象,但你内部没有任何可观察的调用。似乎您不需要computed

var mycopy = packing.isotopes;