2013-05-22 11 views
16

私はタイプスクリプトを初めて使用しています。ノックアウトの良さと組み合わせたいと思います。私は計算された観測可能なものを持っていますが、現在はうまくいきますが、知りたいのはこれについての正しい方法か、よりよい方法です。ノックアウトを宣言しました。タイプスクリプトで観測可能な数値を表示しました

私はknockout definition file from nu-getを使用しています。その中にKnockoutComputed(x)の定義が4つあります。

  1. はIが観察者を宣言する{}方法が好きでこれを維持したい

KnockoutComputedStatic

  • KnockoutComputedDefine
  • KnockoutComputedFunctions
  • をKnockoutComputed。短いが、これは観測を宣言する正しい方法であるか(多分機能でintlisense付き)別の方法があるので、長い話

    私はそうのように最初に使用しています:のHTMLスニペットと

    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(); 
          } 
         }); 
        } 
    } 
    

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

    35

    推奨されるのは、計算に矢印関数を使用することです。

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

    は、基本的にはそれは、関数をコールバック誰問題ではありませんので、クロージャを使用してthisキャプチャ:それはあなたにも希望intellisenceを与えます。 thisは、の代わりにPersonViewModelを意味し続けます。その他:http://basarat.github.io/TypeScriptDeepDive/#/this

    TypeScript Playgroundでインテリセンスを試してください。あなたは押してもインテリセンスになるはずですthis.

    +0

    あなたが送ったクールであり、またあなたが送ったウェブサイトです。 visaul stuidioにはまだintelisenseはありません。私はちょうどそれを吸うと取引する必要がありますか? – Kieran

    +1

    あなたは間違いなくIntelliSenseを取得する必要があります。私はちょうど答えに追加した遊び場のリンクを試してみてください。 – basarat

    +1

    ああ私はここにエクスプレスをインストールしているだけかもしれませんが、おそらくそれと何か関係がありますか?私はプロッパー対インストールで後で試してみる – Kieran

    関連する問題