Ko计算了参考对象

时间:2013-10-23 17:57:23

标签: javascript knockout.js scope

我似乎无法引用ko.computed

中的当前对象

以下是jsFiddle

中的示例

以下是代码示例:

var fruits = ko.observableArray([{
    cart: ko.observable(1),
    fruit: 'Apple',
    carts: ko.computed(function () {
        var tempCartList = [];
        if ( !! this.cart) tempCartList.push(this.cart());
        else console.log("Couldnot reference");
        return tempCartList;
    },this)
}]);

2 个答案:

答案 0 :(得分:1)

我不知道你的代码究竟在做什么,但你可以使用函数来创建一个fruit对象的实例。

var Fruit = function(opts){
    this.cart = ko.observable(opts.cart || 1);
    this.fruit = opts.fruit || '';
    this.carts = ko.computed(function(){
        // some logic here
    })
}

然后在你的fruit observable数组中创建一个Fruit对象的新实例:

var fruits = ko.observableArray([new Fruit({fruit: 'Apple'})]);

希望它会有所帮助。

答案 1 :(得分:0)

可能是一些范围问题。我在一个单独的构造函数中移动了observable数组中的对象,它工作正常:http://jsfiddle.net/saP6v/

var crt = function(){
        var self = this;
        self.cart = ko.observable(1),
        self.fruit = 'Apple',
        self.carts = ko.computed(function () {
            var tempCartList = [];
            console.log(this);
            console.log(this.cart);
            if ( this.cart) tempCartList.push(this.cart());
            else console.log("Couldnot reference");
            return tempCartList;
        },self)
}

var fruits = ko.observableArray([new crt()]);