2013-12-11 4 views
0

다음과 같이 js 파일에 컨트롤러가 정의되어 있습니다. 내 모든 자바 스크립트 파일에서 "Test2Controller"컨트롤러의 배치를 변경할 때까지 완벽하게 작동합니다. 크롬 개발자 도구에서컨트롤러 기능이 js 파일에서 인식되지 않음

오류 : 내가 SampleController 기능/함수 선언 아래 Test2Controller를 배치 할 때 그것은 나에게 아래의 오류 제공

Uncaught TypeError: Property 'controller' of object # is not a function mycontroller1.js:26 Error: Argument 'Test2Controller' is not a function, got undefined at assertArg (file:///D:/Dev/olite/workspace/olite/olite/WebContent/AngularJSDemos/mylearnings/angular.js:1039:11) at assertArgFn (file:///D:/Dev/olite/workspace/olite/olite/WebContent/AngularJSDemos/mylearnings/angular.js:1049:3) at file:///D:/Dev/olite/workspace/olite/olite/WebContent/AngularJSDemos/mylearnings/angular.js:4802:9 at file:///D:/Dev/olite/workspace/olite/olite/WebContent/AngularJSDemos/mylearnings/angular.js:4384:17 at forEach (file:///D:/Dev/olite/workspace/olite/olite/WebContent/AngularJSDemos/mylearnings/angular.js:137:20) at nodeLinkFn (file:///D:/Dev/olite/workspace/olite/olite/WebContent/AngularJSDemos/mylearnings/angular.js:4369:11) at compositeLinkFn (file:///D:/Dev/olite/workspace/olite/olite/WebContent/AngularJSDemos/mylearnings/angular.js:4015:15) at compositeLinkFn (file:///D:/Dev/olite/workspace/olite/olite/WebContent/AngularJSDemos/mylearnings/angular.js:4018:13) at compositeLinkFn (file:///D:/Dev/olite/workspace/olite/olite/WebContent/AngularJSDemos/mylearnings/angular.js:4018:13) at publicLinkFn (file:///D:/Dev/olite/workspace/olite/olite/WebContent/AngularJSDemos/mylearnings/angular.js:3920:30) ...

작업 ::

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

myModule.controller('TestController', function($scope) { 
    $scope.message = 'Message from TestController'; 
}); 

myModule.controller('Test2Controller',function ($scope){ 
    $scope.message = "Message from Test2Controller" ; 
}) ; 

myModule.controller = 'SampleController' ; 

function SampleController($scope) { 
    $scope.customers = [ 
         {name:'AAA',city:'Plano'}, 
         {name:'BBB',city:'Plano'}, 
         {name:'CCC',city:'Bangalore'}, 
         {name:'DDD',city:'SanJose'}, 
         {name:'EEE',city:'SanFO'}, 
         {name:'FFF',city:'SanJose'} 
         ] ; 

    $scope.addCustomer = addCust ; 

    function addCust() { 
     $scope.customers.push ({name:$scope.customerName , city:$scope.customerCity}) ; 
    } ; 
} 

작동하지 않음을 ::

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

myModule.controller('TestController', function($scope) { 
    $scope.message = 'Message from TestController'; 
}); 

myModule.controller = 'SampleController' ; 

myModule.controller('Test2Controller',function ($scope){ 
    $scope.message = "Message from Test2Controller" ; 
}) ; 

function SampleController($scope) { 
    $scope.customers = [ 
         {name:'AAA',city:'Plano'}, 
         {name:'BBB',city:'Plano'}, 
         {name:'CCC',city:'Bangalore'}, 
         {name:'DDD',city:'SanJose'}, 
         {name:'EEE',city:'SanFO'}, 
         {name:'FFF',city:'SanJose'} 
         ] ; 

    $scope.addCustomer = addCust ; 

    function addCust() { 
     $scope.customers.push ({name:$scope.customerName , city:$scope.customerCity}) ; 
    } ; 
} 

저는 현재 각도 j를 배우고 있고 여기에 맞았습니다. 무엇이 문제가 될 수 있을까 ??

+0

왜 SampleController에 대해 동일한 컨트롤러 구문을 사용하지 않습니까? –

답변

1

controllermyModule의 속성 또는 유형 기능입니다. 당신이

myModule.controller(...); 

하지만 당신의 코드를 사용할 수있는 이유는, 당신이 String 형의 값으로이 속성을 대체 :

myModule.controller = 'SampleController' ; 

을 그러니 확실히, 당신은 myModule.controller 이후, 후 기능 myModule.controller()를 호출 할 수 없습니다 더 이상 함수가 아닙니다.

라인을 제거하십시오. myModule.controller = 'SampleController'; : 의미가 없습니다.

+0

안녕하세요. JBiz. "SampleController"질문에 언급 된 바와 같이 아무런 문제가 없습니다. 이 문제는 "Test2Controller"에서만 발생합니다. "myModule.controller = 'SampleController'; 앞에"Test2Controller "가있는 첫 번째 코드 단편;" 어떤 문제없이 완벽하게 작동합니다. 이 이동 후 "myModule.controller = 'SampleController';" 이 코드는 중단됩니다. 어떤 제안 ??? – J2G

+0

제안 : 내 대답을 다시 읽으십시오. myModule의 function controller()를 String으로 대체하려고합니다. 분명히,이 대체 후에 더 이상 myModule.controller()를 호출 할 수 없습니다. 왜냐하면 String을 호출하는 것이 의미가 없기 때문입니다. –

관련 문제