2013-05-22 2 views
16

필자는 typescript를 처음 사용하고 knockout의 장점과 결합하고 싶습니다. 나는 계산 된 관측 가능 (observable) 함수를 가지고 있는데, 현재는 작동하지만 알고 싶기 때문에 이것에 대한 올바른 방법이거나 더 좋은 방법이 있습니다.knockout 선언은 typescript에서 관찰 가능을 계산했습니다.

나는 knockout definition file from nu-get을 사용하고 있습니다. 거기에는 4 개의 KnockoutComputed (x) 정의가 있습니다.

  1. 내가 관찰의 선언의 {} 방법을 좋아하고이를 유지하고자하는

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에있는 intellisense를 시도하십시오. 누르시면 인텔리 센스를 받으실 수 있습니다. this.

    +0

    멋진 페이지이며 보내 주신 웹 사이트입니다. 아직도 비자에 intelisense가 없다. 나는 그것을 빨아 먹고 거래해야 할 것입니다. – Kieran

    +1

    분명히 인텔리 센스를 얻어야합니다. 방금 답변에 추가 한 놀이터 링크를 사용해보십시오. – basarat

    +1

    아. 나는 여기에 아마도 익스프레스를 설치했을 뿐이다. 아마도 그것과 관련이있다? 나는 프로퍼티 대 설치와 함께 나중에 시도 할 것이다. – Kieran

    관련 문제