2014-03-06 6 views
0

각도 문서에서 읽은 지침을 따르려고합니다. 나는 this 링크도 읽고 있습니다. 는 기본적으로 I 건축의이 종류를 수행하기 위해 노력하고있어 : http://cliffmeyers.com/blog/2013/4/21/code-organization-angularjs-javascript각도 응용 프로그램 디자인 구조

내 문제는 내가 각도-씨의 예를 따른다면 내가 이해 것과, 내가 모듈 컨트롤러에 내 모든 컨트롤러를 넣어해야한다는 것입니다

, 내 지시문을 모듈 지시문에 추가 한 다음 모든 모듈을 주 모듈에 주입합니다. 또한 컨트롤러 i.js, directive.js, ...를 index.html에로드해야합니다.

다른 기술을 사용하려면 공개 패턴, 모델, 컨트롤러 js 파일을 준비한 다음 다음 스키마를 사용합니까?

나는 미스 것이 있습니다 ...

'use strict' 

(function(objectTestService) { 

    var name; 

    function setName(newName) { 
     name = newName; 
    } 

    function getName() { 
     return name; 
    } 

    function getObjectTestModelFromService(key) { 
     objectTestService.getNewName(key) 
    } 

    return { 
     setName :setName, 
     getName : getName, 
     getObjectTestModelFromService : getObjectTestModelFromService 
    } 
})(); 

그리고 이것은 또한 다른 JS 파일 (컨트롤러, 서비스)의 스타일 :

angular.module('objectTestModule',[]); 

angular.module('objectTestModule',[]).factory('objectTestService',['$http', function($http) { 
    return new objectTestService($http); 
}]); 

angular.module('objectTestModule',[]).factory('objectTestModel',['objectTestService', function(objectTestService) { 
    return new objectTestModel(objectTestService); 
}]); 

angular.module('objectTestModule',[]).controller('objectTestController',['$scope','objectTestModel', objectTestController]); 

objectTestModel는 다음과 같이 정의된다 구조.

---- EDIT

이렇게 구현해야합니까?

'use strict' 

angular.module('objectTestModule',[]); 

angular.module('objectTestModule',[]).factory('objectTestService',['$http', function($http) { 
    return new ObjectTestService($http); 
}]); 

angular.module('objectTestModule',[]).factory('objectTestModel',['objectTestService', function(objectTestService) { 
    return new ObjectTestModel(objectTestService); 
}]); 

angular.module('objectTestModule',[]).controller('objectTestController',['$scope','objectTestModel', function($scope, objectTestModel) { 
    return new ObjectTestController($scope, objectTestModel); 
}]); 

그리고 컨트롤러는이 하나

function ObjectTestController($scope, objectTestModel){ 

    $scope.test = "Test String"; 

}; 

(I 간결에 대한 서비스와 모델을 포함하고 있지 않다 그러나 그것은 나를 "말하는 된 오차 제공 Cuase 내가 댄 Saltmer 조언을

을 따라 $ injector가 필요한 종속성을 해결할 수 없습니다. "

+0

모듈 종속성'모듈을 정의 할 때 []'한 번만 정의해야합니다. 그렇지 않으면 : angular.module ('objectTestModule'). factory' –

답변

1

이 예제의 objectTestModel 문제는 절대로 어디에도 가지 않는다는 것입니다. 함수 ins 그러나 당신의 서비스 인 귀환 가치로 아무 것도하지 마십시오. 또한 각 줄을 정의하고 닦아서 한 번만 정의하고 모듈을 묶거나 변수를 사용하여 모듈을 고정하십시오.

간단히 정의하지 않으려는 이유는 무엇입니까?

myModule.service("MyService", ["$http", function(http) { 

    var name; 

    this.setName = function(newName) { 
     name = newName; 
    }; 

    this.getName = function() { 
     return name; 
    }; 

}); 

당신이 생각한 방식은 이것이며, 단지 생성자로 참조 할 함수를 정의해야합니다.

function ObjectTestModel(objectTestService) { 

    var name; 

    function setName(newName) { 
     name = newName; 
    } 

    function getName() { 
     return name; 
    } 

    function getObjectTestModelFromService(key) { 
     objectTestService.getNewName(key) 
    } 

    return { 
     setName :setName, 
     getName : getName, 
     getObjectTestModelFromService : getObjectTestModelFromService 
    } 
} 

여러분이 가지고있는 각도로 설정하십시오. 이를 구성하고자하는 방법의 예를 작업하는

myModule.factory('objectTestModel', ['objectTestService', function(objectTestService) { 
    return new ObjectTestModel(objectTestService); 
}]); 

바이올린 : http://jsfiddle.net/SdUdf/

+0

고마워요,하지만 아직 확실하지 않습니다. 내가 질문을 편집했습니다 –

+0

당신의 의존성을 찾을 수 없다는 남은 문제는 '각도 .module ("")'여러 번. 이렇게 할 때마다 빈 모듈이 생성됩니다.나는 응답에 곧 바이올린을 던질 것이다. –

+0

고맙습니다. 나는 그 모범을 기다릴 것이다. –