2013-04-30 17 views
5

Używam klonu o nazwie https://github.com/angular/angular-seed, aby utworzyć prostą aplikację Angular.js. Próbuję wprowadzić pewne właściwości do kontrolerów, aby powiązać je w moim kodzie HTML, ale nadal otrzymuję komunikaty o błędach, których nie mogę wymyślić.Sterownik Angular.js nie może ustawić właściwości

Mój plik controllers.js wygląda obecnie:

'use strict'; 

/* Controllers */ 

angular.module('myApp.controllers', []). 
    controller('MyCtrl1', [function($scope) { 
    $scope.names = 'bob' 
    }]) 
    .controller('MyCtrl2', [function() { 

    }]); 

Oto app.js zbyt jeśli pomaga:

'use strict'; 

// Declare app level module which depends on filters, and services 
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives',  'myApp.controllers']). 
    config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/view1', {templateUrl: 'partials/partial1.html', controller: 'MyCtrl1'}); 
    $routeProvider.when('/view2', {templateUrl: 'partials/partial2.html', controller: 'MyCtrl2'}); 
    $routeProvider.otherwise({redirectTo: '/view1'}); 
    }]); 

Użyłem domyślną nazwę dla aplikacji " myApp "i również nazwałem widok ng w moim kodzie HTML. Kiedy MyCtrl1 jest w użyciu ciągle dostaję ten błąd:

TypeError: Cannot set property 'names' of undefined 

Czy jest tu coś syntaktycznie błędnego? Starałem się tylko zmodyfikować controllers.js Aby uniknąć problemów, więc nie powinno być problemów gdzie indziej ...

Odpowiedz

14

Kontrolery ma kilka przeciążeń, można uprościć kod do tego:

angular.module('myApp.controllers', []). 
    controller('MyCtrl1', function($scope) { 
    $scope.names = 'bob' 
    }) 
    .controller('MyCtrl2', function() { 

    }); 

Albo niech wiedzą, co $ kątowy zakres jest tak:

angular.module('myApp.controllers', []). 
    controller('MyCtrl1', ['$scope', function($scope) { 
    $scope.names = 'bob' 
    }]) 
    .controller('MyCtrl2', [function() { 

    }]); 

referencyjny: http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller

+0

zapisane dzień, właśnie uczucie głupie tutaj! Dzięki! – elwis

+0

Właśnie tutaj, spróbowałem użyć drugiego przykładu, (gdzie $ scope jest odwołany w tablicy), ale nie udało mi się go uruchomić, tylko pierwszy działał dla mnie: S na wypadek gdyby ktoś w innym przypadku próbuje się uruchomić drugi. – onaclov2000

+0

@ onaclov2000 Prawdopodobnie jest to literówka ... czy masz przykład, że nie działa? Działa tutaj z najnowszą wersją: http://jsfiddle.net/hS9sn/ (ten sam kod działa również ze starszymi). – Langdon

Powiązane problemy