Knockout.js - 如何在计算的observable中获取可观察属性的值?

时间:2012-06-15 05:24:01

标签: javascript knockout.js

我有以下Knockout.js对象:

var viewModel = {
    description : ko.observable(""),
    Name : ko.observable(""),
    productid : ko.observable(""),
    productmodel : ko.observable(""),
    productnumber : ko.observable(""),
    text_relevance : ko.observable(""),
    mydunamicfield : ko.computed(function() {
        return "bq=(and " +
            ((this.description == "") ? "" : ("description:" + this.description + " ")) +
            ")";
    } , this)
};

但是mydunamicfield属性没有产生正确的连接结果。如果我尝试在另一个函数中引用this.description(),我会在页面加载时看到以下错误消息:

Property 'description' of object [object Window] is not a function

在这种情况下有什么问题?

1 个答案:

答案 0 :(得分:15)

首先,如果您希望获得其值,则必须将this.description引用为this.description()

其次,请尝试将computed字段放在viewModel之外('this' viewModelcomputed本身并未在您创建{{{1}}时定义{1}}可观察到。

有关工作示例,请参阅http://jsfiddle.net/rAEqK/2/