2014-04-09 2 views
1

안녕이 난 Knockout.js와 다중 응용 프로그램을 짓고 있어요 그리고 난 너무 많은 중복 코드를 작성하는 문제에 직면하고있어 내가 있습니다재사용 Knockout.js ViewModels

내가 솔루션 및 require.js 검색

var personVm = function { 

    //properties here 

} 

personVm.prototype { 

    //extensions & methods here 

} 

그리고 어떤 점에서 나는 그래서 내가 코드를 복제 결국 .. 다른 관점에서 동일한 뷰 모델을 사용해야합니다 는 .. 가장 일반적입니다 .. 그러나에 내 경우 require.js가 적합하지 않아 사용할 수 없습니다. 어떤 사람이이 문제를 다루는 몇 가지 방법을 공유한다면 나는 기뻐할 것입니다.

업데이트 :

가 나는 (내가 asp.net에서 얻을) 내 differen 뷰 주어진 뷰 모델의 경우

답변

1

당신은 사용할 수 있습니다 잡아 수있는 용기의 일종이 필요 더 내 질문을 지우려면 나중에 다음

ko.utils.extend

var personVm = function { 
    //properties here 
} 

personVm.prototype { 
    //extensions & methods here 
} 
,

var superHeroVm = function() { 
    var self = this; 

    self.specialPower = ko.observable(); 

    ko.utils.extend(self, new personVm()); 
} 
+0

그래 보인다.하지만 다른 뷰에서 동일한 ViewModel을 재사용하고 싶지는 않다. personVM 이후 ko.utils.extend (self, new personVM())가 personVM을 인식하는 방법. 고맙습니다. –

+0

그건 본질적으로 확장하고있는 것입니다. 'personVm'을 다른 뷰 모델에 대한 '기본'으로 만듭니다. 그래서 superHeroVm에는 personVm의 속성이 포함될 것입니다. – Alex

+0

... 성취하고자하는 것을 더 많이 포함하도록 질문을 풀면 대답을 업데이트하겠습니다. – Alex

0
자신의 녹아웃

personVm을 매번 액세스 할 수있는 파일에 보관하고 매번 새 파일을 만들 수없는 이유는 무엇입니까?

thisModel.person = new personVm(data); 

otherModel.person = new personVm(data); 

또는 문제를 제대로 이해하지 못 했습니까?