2012-05-20 2 views
0

ko.computed에서 쓰고 읽는 필드를 동적으로 바꾸는 방법이 있습니까? 예를 들어,이 기능을, 나는 전달할 수있는 변수 필드 이름을 가진 self.JobStartDate를 교체하려면 :knockout.js 변수가있는 동적 필드 바인딩

function Job(data) { 
    var self = this; 
    ko.mapping.fromJS(data, {}, this); 

    var computedDateFn = { 
     read: function() { 
      return formatDate(ko.utils.unwrapObservable(self.JobStartDate), true); 
     }, 

     write: function(value) { 
      var jsonDate = "/Date(" + Date.parse(value).getTime(); 
      self.JobStartDate(jsonDate); 
     } 
    } 

    this.formattedStartDate = ko.computed(computedDateFn); 
    this.formattedEndDate = ko.computed(computedDateFn); // this guy would need the field it writes to/reads from to be self.JobEndDate 
} 

답변

1

당신은 computedDateFn 문자열로 필드 이름을 받아들이고 정의하는 객체를 반환하는 함수를 만들 경우 ...이 같은 배열 표기법을 사용하여 관찰 계산

http://jsfiddle.net/bczengel/tMTCV/

+0

예! 고맙습니다! –

+0

이것은 분명히 자기가 얻는 것을 제외하고 내가 찾고있는 대답이었다 [fieldName]는 함수가 아니다. 생각? –

+0

self.JobEndDate 또는 self.JobStartDate를 관찰 할 수없는 경우 이런 일이 발생합니다. 내가 테스트 할 수 있도록 내 바이올린에 컨텍스트를 추가 할 수 있습니까? –