13

次の 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

この場合の問題は何ですか?

4

1 に答える 1

18

まず、その値を取得するかthis.descriptionのように参照する必要があります。this.description()

次に、自分のcomputedフィールドを自分の外側に置いてみてくださいviewModel(オブザーバブルを作成した時点で'this'はフィールドviewModel自体が定義されていないためです。computed

実際の例については、 http://jsfiddle.net/rAEqK/2/を参照してください。

于 2012-06-15T09:17:48.880 に答える