2016-07-08 3 views
0

컨트롤러를 한 번만 만들 수있는 방법을 조사했지만 정말 좋은 솔루션을 찾지 못했습니다.AngularJS 컨트롤러를 한 번만 만듭니다.

(A)는 일부 만 해결 방법 발견 :

  1. 여기에 생성 된 컨트롤러를 $ rootScope에 컨트롤러 목록을 작성하고 추가
  2. masterControllerScope에서 수집에 생성 된 모든 컨트롤러를 저장 masterController과 그 범위에 적용 할 솔루션을 만들

템플릿이로드되는 경우 특수 myService을 사용하여 컨트롤러를 agregate해야합니다. lso 서비스는 수표를해야합니다. 컨트롤러가 이미 생성 된 경우 - 이전 컨트롤러가로드 된 것이지 새로로드 된 컨트롤러가 아닌 경우 컨트롤러 컬렉션에 새로 추가해야합니다.

알고리즘은 단순한 것처럼 보이지만 각진을 사용하면 추악합니다. 나는 모서리가 약해져서 이것이 내가 더 나은 해결책을 찾지 못한 이유라고 생각한다.

더 좋은 아이디어 나 해결책을 제시해주세요. 더 설명을 추가 가능한 나는 이미 기본 라이브러리에서 구현해야 할 일이나 서비스를 재 설계해야합니다 ...

:

ng-app=singleApplication 
|-ng-view 

SingleApplication는 에 대한 템플릿을 관리 할 수 ​​NG-경로있다 ng-view. 각 템플릿에는 고유 컨트롤러이 있습니다. 때마다 현재보기와 다른 적용, 나는 컨트롤러 생성을 참조하십시오. 하지만 템플릿을 한 번로드 한 경우 서버에 데이터를 요청하지 않아도됩니다. 이전 데이터, 테이블, 컨트롤을 가진 템플릿을 보여줘야하지만, 컨트롤러가 매번 생성되는 경우에는 그럴 수 없습니다. 모든 데이터는 컨트롤러 범위 (이), 모든 키가 컨트롤러 범위의 고유로드,하지만 난 $ 범위 또는 $ rootScope에 데이터를 저장하면 내가 좋은 보장이 없습니다. 모든 컨트롤러가 하나 개의 모듈에 작성하는 경우

+1

아래의 예를 찾아주세요 그 모듈과 컨트롤러 수 있습니다 당신은 하나의 컨트롤러를 만들고 그것을 사용하려고 모듈 전체에서 맞습니까? –

+0

성취하려는 것은 무엇입니까? 당신이 원하는대로 할 수있는 방법은 아마 –

+0

입니다. 템플릿에 필터를 사용하거나 컨트롤러의 테이블에서 n 페이지로 이동하면 모든 데이터가 재설정됩니다 (템플릿 당 하나의 컨트롤러). 여분의 서버 요청으로. 따라서 컨트롤러를 한 번만 만들 수있는 능력이 필요하다고 생각합니다. – Sergii

답변

2

, 우리는

var app = angular.module('app', []); 


app.controller('TextController', function ($scope) { 
    $scope.text = { 
     message: 'Welcome!!' 
    }; 
}); 

app.controller('ItemController', function ($scope) { 
    $scope.items = [{ 
     title: 'Pencil', 
     quantity: 8, 
     price: 4.2 
    }, { 
     title: 'Pen', 
     quantity: 2, 
     price: 5.2 
    }, { 
     title: 'Watch', 
     quantity: 3, 
     price: 10.2 
    }]; 
}); 

http://codepen.io/nagasai/pen/bZoVVG

관련 문제