2012-09-25 7 views
0

이전에 RequireJS를 사용한 적이 없으므로 도움이 될 것입니다.RequireJS - 필수 항목은 항상 정의되지 않음으로 반환됩니다.

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script type="text/javascript" 
     data-main="CustomScripts/market-need" 
     src="CustomScripts/require.js"></script> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Untitled 1</title> 
</head> 
<body> 
etc... 
</body> 
</html> 

나는 다음과 같은 자바 스크립트 CustomScripts/market-need.js에서 정의한 : 나는 다음과 같은 HTML이있다.

(function(){ 
    requirejs.config({ baseUrl: 'CustomScripts' }); 

    require(['mndataservice'], 
     function (mndataservice) { 
      mndataservice.getListData(); 
     }); 
})(); 

그리고 CustomScripts/mndataservice.js에 저장된 다음 코드. 그것은 market-need.js에서 mndataservice.getListData(); 라인을 칠 때
define([], function() { 
    function getListData() { 
      alert("Hit"); 
     } 

    return 
    { 
     getListData: getListData 
    }; 
}); 

내가 위를 실행할 때마다

, mndataservice는 정의되지 않습니다. 이것은 한 지점에서 일했고, 나는 나와 내 삶의 잘못을 발견 할 수 없습니다.

답변

1

당신은 변경하는 경우 :

function (mndataservice) { 
    mndataservice.getListData(); 
}); 

에 : 나는 그것을 고칠 생각

var mndataservice = { 
    getListData: function() { 
     alert("Hit"); 
    } 
}; 

: 다음

function (mndataservice) { 
    this.mndataservice.getListData(); 
}); 

도 함께 mndataservice.js의 내용을 대체 당신.

업데이트 :

하는 것은 간단하게 변경 mndataservice.js에 :

define([], function() { 
    return { 
     getListData: function() { 
      alert("Hit"); 
     } 
    } 
}); 

이 문제를 해결해야한다. "this"를 추가하지 마십시오. 다른 기능에서는 귀하의 예제가 작동하지 않는 이유

업데이트

아래에서 귀하의 질문에 위로 다음은 질문과 광산했다. 이유는 당신이 작동하지 않았다 - 코드가 실제로이 일을한다 :

define([], function() { 
    function getListData() { 
      alert("Hit"); 
     } 

    return; 
    { 
     getListData: getListData 
    }; 
}); 

참고 바로 return 키워드 뒤에 세미콜론. 코드에는 없지만 자바 스크립트의 Automatic Semicolon Insertion에 의해 자동으로 삽입되므로 객체가 아닌 이 정의되지 않은이 반환됩니다.

열린 중괄호를 같은 줄까지 이동하면 return이 수정됩니다!

+0

좋아,하지만 내 의도는 mndataservice에 노출 모듈 패턴을 사용하는 것이 었습니다. 그 이유가 잘못된 이유에 대한 설명이 있습니까? 여기 예제를 보았습니다. http://requirejs.org/docs/api.html#define –

+0

위 업데이트를 참조하십시오. 필요로하는 mndataservice.js의 사소한 변경으로 문제를 해결할 것이라고 생각합니다. 여전히 모듈 패턴을 나타냅니다. – Mindwalker2076

+0

마지막 예제가 작동하지 않습니다. 나는 RequireJS를 사용하는 것이 마술로 내려 가고 있다는 사실을 좋아하지 않는다. 이 순서대로 단어를 말하고, 닭고기를 희생 시키십시오. 아마도 효과가 있습니다! ;-) –

관련 문제