0

コードを jsFiddle にアップロードします。そこでテストできます。

http://jsfiddle.net/2RPsw/1/

これが問題です。完全な名前を取得する代わりに、関数のソースコードを表示します。ko.computed を使えばうまくいきます。以下で行ったことも問題ないはずです。値ではなくソースコードを表示する理由を説明してください。

            <p>First name: <input data-bind="value: firstName" /></p>
            <p>Last name: <input data-bind="value: lastName" /></p>
            <p>Full name: <span data-bind="text: fullName"></span></p>?

KOコード:

function AppViewModel() {

    self = this;

    self.firstName = ko.observable("Bert");
    self.lastName = ko.observable("Bertington");
    self.fullName = function(){
        return  self.firstName() + " " + self.lastName();

    };
}

// Activates knockout.js
ko.applyBindings(new AppViewModel());?

アップデート:

TCMの質問に答える。ko.computed を使いたくない理由 混乱していて、いつ使用するかわからないという理由だけで、使用したくないというわけではありません。例えば

次のコードは、ノックアウトの最初のチュートリアルからのものです。ko.computegd を使用していませんが、動作します。

http://learn.knockoutjs.com/#/?tutorial=intro

self.capName = function(){
    var curVal = self.lastName();
    self.lastName(curVal.toUpperCase());
};
4

1 に答える 1

5

ko.computed を使用する必要があります。

 self.fullName = ko.computed(function(){
        return  self.firstName() + " " + self.lastName();

 },this);

これにより、値firstNameまたはlastName変更が変更されるたびに ko.computed 関数に反映され、スパンの値を手動で更新する必要がなくなります。

詳細な説明については、これを読むことができます:

http://knockoutjs.com/documentation/computedObservables.html

このリンクでは、多かれ少なかれ同じ例が示されています。

ko.computed を使用したくない場合は、次のリンクを参照してください: http://jsfiddle.net/2RPsw/10/

于 2012-10-08T15:44:58.040 に答える