2014-04-16 2 views
0

다른 requirejs 모듈에서 한 viewmode의 속성을 '가져오고'설정하는 방법은 무엇입니까?검도 요구 사항 다른 모듈의 viewmodel 액세스

test.js 
================ 
define(['kendo'], 
    function (kendo) { 
     var vm = kendo.observable({ 
      propertyA: "a" 
     }); 
    return {vm: vm}; 
}); 

another.js 
================ 
define(['kendo'], 
    function (kendo) { 
     var testMethod = function() { 
      var test = require(['test']); 
      var testName = test.vm.get("propertyA");  //<< uncaught typeerror ??? 
      test.vm.set("propertyA", "b");    //<< uncaught typeerror ??? 
     }; 
    return {testMethod: testMethod}; 
}); 

현재 프로젝트가 아닌 한 C# 배경이 있고 js와 함께 사용하지 않아서 죄송합니다.

viewModel의 속성을 가져 오거나 설정하기 위해 test.js VM에 메서드를 추가해야합니까? 아니면 다른 모듈에서 직접 속성 (이 예제의 경우 propertyA)을 가져오고 설정할 수있는 다른 방법이 있습니까?

+0

({...});'어떻게해야? – Louis

+0

메소드 이름을 testMethod로 변경했습니다. another.js는 test.js viewModel에 액세스 할 필요없이 애플리케이션의 다른 모듈에서 사용할 수있는 라이브러리입니다. –

+0

내가 언급 한 문구는 구문 상으로는 정확하지 않습니다. 'var testMethod = function() {...};을 의미 했습니까? – Louis

답변

0

당신이하는 방식대로 할 수 없습니다. require으로 전화하면 비동기입니다. 따라서 test에는 원하는 값이 없습니다.

당신은 이런 식으로 그것을 할 수 :

는`VAR 방법 = 기능 도대체입니다
define(['kendo', 'test'], function (kendo, test) { 
     var testMethod = function() { 
      var testName = test.vm.get("propertyA");  //<< uncaught typeerror ??? 
      test.vm.set("propertyA", "b");    //<< uncaught typeerror ??? 
     }; 
    return {testMethod: testMethod}; 
}); 
+0

test.js 자체에서 testMethod를 호출하면 순환 참조를 얻을 수 있습니까? 나는 이것이 괜찮은 것 같아. 만약 내가 밖에서 시험 전화 .js 내가 맞습니까? –

+0

나는 당신이 옳은지 확신 할 수 없으므로 설명해 드리겠습니다. 내가 제안한대로 코드를 수정하면 순환 종속성을 가지지 않지만 나머지 코드는 질문에 표시된대로 유지됩니다. 그러나,'testMethod'를 사용하기 위해 의존성 중에서'another'를 가지도록'test.js' 파일을 수정하는 것이 좋습니다. 그렇다면 원형 의존성을 가질 것입니다. 다른 모듈은이 문제를 일으키지 않습니다. – Louis