2012-10-08 1 views
0

jsFiddle에 코드를 업로드합니다. 거기에서 테스트 할 수 있습니다.KnockoutJs가 올바른 값을 얻을 수 없습니다.

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

여기에 문제의 대신 fulln 이름을 받고,이 함수의 소스 코드를 보여줍니다. 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());? 

UPDATE :

는 TCM의 질문에 대답합니다. 왜 내가 ko.computed를 사용하고 싶지 않습니다. 내가 혼란스럽고 사용시기를 잘 모르기 때문에 단순히 사용하고 싶지 않습니다. 예를 들어

다음 코드는 knockout의 첫 번째 튜토리얼입니다. 그것 ko.computegd를 사용하지 않는, 그러나 그것은 작동합니다.

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

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

답변

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/

+0

내가 ko.computed가 작동 얻을 것이다 알고,하지만 난 문제가 발생할 수를 사용하지 않을 이유를 이해 해달라고. – qinking126

+0

@ pharmaceutlexit : 내 편집을 참조하십시오. – TCM

+0

내 질문이 업데이트되었습니다. 업데이트를 참조하십시오. – qinking126