2014-11-18 4 views
0

, 나는 레이아웃을 top.slimAngularJS와 내 레일 응용 프로그램에서

div[ng-app="topApp"] 
    div[ng-controller="InboxCtrl"] 
    ul 
    li[ng-repeat="item in items"] 
     .... 
    .... 

JS가 일반적인 컨트롤러는

var topApp = angular.module('topApp',[]) 
memApp.controller('InboxCtrl',function($scope,$http){ 
    $scope.items = [{},{}] 
}) 

입니다 그리고 모든 페이지는 ng-app 이제

htm[ng-app="..."] 
    .... 
    =render "top" 

처럼 자신의이 angularjs는 작동하지 않았으므로, ng-app은 중첩 될 수 없습니다.

하지만 데이터를 바인딩하는 공통 페이지에 컨트롤러를 추가하고 싶습니다. 어떻게해야합니까?

+0

같은 자신의 NG-의 앱이있다 did't 일하는 것, 그것은 ng-app가 중첩 될 수없는 것처럼 보인다.'doesnt match .. 어떻게 ur가'app'을 중첩 시켰는가? 무엇을 원합니까? 우리는 일반적으로 하나의 ng-app와 복수의 컨트롤러를 가지고 있습니다. –

+0

패턴은 html (하나의 ng-app)과 여러 개의 중첩 된 ng-controller 또는 컨트롤러. https://docs.angularjs.org/tutorial/step_07 라우팅을 들여다 볼 수 있습니다. –

+0

한 페이지에 여러 개의 ng-app 지시어가 필요하다면 [ 부트 스트랩] (https://docs.angularjs.org/guide/bootstrap#manual-initialization) 앱을 수동으로 설치하십시오. – Yoshi

답변

2

하나의 '앱'에만 붙어 있습니다. top.slim div에서 ng-app를 제거하고 동일한 모듈에 컨트롤러를 선언하십시오 (원하는 경우 하위 모듈이 될 수 있음).

레이아웃 top.slim

div 
    div[ng-controller="InboxCtrl"] 
    ul 
    li[ng-repeat="item in items"] 
     .... 
    .... 

JS는

var topApp = angular.module('myApp',[]) 
memApp.controller('InboxCtrl',function($scope,$http){ 
    $scope.items = [{},{}] 
}) 

입니다 그리고 모든 페이지는 이제 AngularJS와 주어진 코드 라인`에서

html[ng-app="myApp"] 
    .... 
    =render "top" 
+0

이게 좋을 것 같습니다! – HXH

+0

그래서 html로'html [ng-app]'를 쓰는지 알고 싶습니다. js가 원하는 것은 무엇입니까? 'var topApp = angular.module ('', [])'할 수 있을까요? – HXH

+0

작동하지 않습니다. 앱의 이름을 지정해야합니다. –

관련 문제