2017-09-19 8 views
0

내 Angularjs 모듈을 추상화하려고 할 때 각도 컨트롤러에서 범위를 잃어가는 것 같습니다.ng-view를 사용하여 각진 모듈 간의 범위 축소

내 응용 프로그램 모듈을 사용하면 정상적으로 작동하지만 home.js 모듈을 app.layout으로 변경하면 $ scope가 더 이상 작동하지 않습니다.

누구든지 여기에서 문제를 발견 할 수 있습니까?

_Layout.html

<body class="docs-body" ng-app="app"> 
<div layout="column" ng-cloak> 
    <section layout="row" flex> 
     <div ng-include="'App/layout/sidenav.html'"></div> 
     <md-content class="_md layout-column flex" layout="column" flex=""> 
      <div ng-include="'App/layout/toolbar.html'"></div> 
      <div class="container body-content"> 
       @RenderBody() 
      </div> 
     </md-content> 
    </section> 
</div> 
</body> 

@RenderBody를 (포함하고 머리를 왼쪽으로)()는 Index.html을

<!-- this is where content will be injected --> 
<div ng-view></div> 

<div> 
<h1>Home Page</h1> 
<p>{{ message }}</p> 
</div> 

내 애플 home.html을

을 제공합니다. js

angular. 
.module('app', [ 
     'app.core', 
     'app.layout', 
    ]); 

})();

layout.module.js

(function() { 
'use strict'; 

angular.module('app.layout', [ 
    'ngAnimate', 
    'ngMaterial', 
    'ngAria' 
]); 

})();

core.module.js

(function() { 
'use strict'; 

angular.module('app.core', [ 
    'ngRoute' 
]); 

})();

및 route.js : 마지막으로

angular.module('app.core') 
    .config(function ($routeProvider, $locationProvider) { 
     $routeProvider 

     // route for the home page 
     .when('/', { 
      templateUrl: 'App/layout/home.html', 
      controller: 'home' 
     });// End routeprovider 
    })// end config 

그리고 범인 ... Home.js

(function() { 
'use strict'; 

console.log('registering controller home before Angular'); 

angular 
    .module('app.layout') 
    .controller('home', home); 

home.$inject = ['$scope']; 

function home($scope) { 
    console.log('registering controller home'); 
    // create a message to display in our view 
    $scope.message = 'Everyone come and see how good I look!'; 
} 

})(); 내가 home.js에

.module('app); 
.controller('home', home); 

, 내가

.module('app.layout') 
.controller('home', home); 

이있는 경우 그러나 그것은

를 표시

'Everyone come and see how good I look!' 

은 $ scope.message 표시가 이제

,

{{message}} 

나는 어떻게 든 여기에 범위를 잃어 버리고 있음을 알고 있지만, 나는 그것을 고칠 방법을 생각할 수 없다! 컨트롤러 외부에서 컨트롤러를 다시 선언해야합니까?

답변

0

각도가 귀하의 home 컨트롤러를 가져올 수 없다고 생각합니다. 을 app.core 모듈에 주입해야합니다.

+0

코어 모듈에 app.layout을 주입하려했지만 디버깅 할 때 컨트롤러를 빌드하지 않았습니다. 레이아웃에 코어를 삽입하려고했지만 여전히 빌드하지 않았습니다. 홈 컨트롤러에 연결할 수없는 것 같지만 모듈에 대한 종속성과 각 모듈간에 다른 방법을 얻는 방법을 파악하려고합니다. – cptHoek

+0

콘솔에 오류가 표시 되었습니까? –

+0

이름이 'home'인 컨트롤러가 등록되어 있지 않다는 것을 의미합니다.이 컨트롤러를 빌드하는 방법을 알면 이해가됩니다. – cptHoek

0

이 솔루션은 오히려 실망 스러웠습니다. Visual Studio의 번들 구성을 사용하여 모듈 파일을 컴파일하기 전에 home.js 파일을 추가했습니다. 그렇게함으로써 컨트롤러를 구축하고 등록하려고 할 때 모듈을 찾을 수 없었습니다.솔루션은 먼저 모든 모듈을 빌드 한 다음 번들 config에 빌드 순서를 지정하여 컨트롤러를 빌드하는 것이 었습니다.