19

タイプスクリプトは初めてで、ノックアウトの良さと組み合わせたいと思っています。現在機能している計算されたオブザーバブルがありますが、これが正しい方法なのか、それともより良い方法があるのか​​ を知りたいです。

nu-get のノックアウト定義ファイルを使用しています。その中には、4 つの KnockoutComputed(x) 定義があります。

  1. ノックアウト計算済み
  2. ノックアウトComputedDefine
  3. KnockoutComputedFunctions
  4. ノックアウトComputedStatic

オブザーバブルを宣言する {} メソッドが好きで、これを維持したいと考えています。簡単に言えば、これはオブザーバブルを宣言する正しい方法ですか、それとも別の方法がありますか(関数に intlisense を使用する可能性があります)

私は最初のように使用しています:

class PersonViewModel {
    public firstname: KnockoutObservable<string>;
    public lastname: KnockoutObservable<string>;
    public fullname: KnockoutComputed<string>;
    constructor() {
        this.firstname = ko.observable('');
        this.lastname = ko.observable('');
        this.fullname = ko.computed({
            owner: this,
            read: function () {
                return this.firstname() + " " + this.lastname();
            }
        });
    }
}

次の html スニペットを使用します。

<h2>Type Script and Knockout.</h2>
<input data-bind="value: firstname" />
<input data-bind="value: lastname" />
<div data-bind="text: fullname"></div>
4

1 に答える 1

39

計算にはアロー関数を使用することをお勧めします。必要なインテリジェンスも提供します。

this.fullname = ko.computed({
        owner: this,
        read:  () => {
            return this.firstname() + " " + this.lastname();
        }
    });

基本的thisにはクロージャーを使用してキャプチャするため、誰が関数をコールバックしても問題ありません。の代わりにthisを意味し続けます。詳細 : http://basarat.github.io/TypeScriptDeepDive/#/thisPersonViewModelany

TypeScript Playgroundでインテリセンスを試してください。押すとインテリセンスが得られるはずですthis.

于 2013-05-22T05:29:18.567 に答える