Я пытаюсь определить контроллеры в HTML и js, используя очень простой пример. Контроллер Кена работает. Барби не делает. почему это?
http://jsfiddle.net/laurencefass/b18w58kc/1/
<div ng-app='demo'>
<p ng-controller='MyCtrl'>Hi, it Ken. The current time is {{ken_time}}</p>
<p>Hi, it Barbie. The current time is {{barbie_time}}</p>
угловой код
var demo = angular.module('demo', []);
function MyCtrl ($scope) {
$scope.ken_time = new Date().toTimeString();
}
app.controller('BarbieCtrl', function($scope) {
$scope.barbie_time = new Date().toTimeString();
});
Вы забыли ng-controller='BarbieCtrl'
контроллер: добавьте ng-controller='BarbieCtrl'
<div ng-app='demo'>
<p ng-controller='MyCtrl'>Hi, it Ken. The current time is {{ken_time}}</p>
<p ng-controller='BarbieCtrl'>Hi, it Barbie. The current time is {{barbie_time}}</p>
</div>
Кроме того, вам нужно добавить контроллер в demo.controller
приложение: demo.controller
вместо app.controller
var demo = angular.module('demo', []);
function MyCtrl ($scope) {
$scope.ken_time = new Date().toTimeString();
}
demo.controller('BarbieCtrl', function($scope) {
$scope.barbie_time = new Date().toTimeString();
});
Вы определили demo
и использовали его в качестве app
.
var demo = angular.module('demo', []);
^^^ -->//defined
Используемый:
app.controller('BarbieCtrl', function($scope) {
^^^ --> //app is undefined
Примечание:
ng-controller
требуется при подключении контроллера.
Полный фрагмент:
<div ng-app='demo'>
<p ng-controller='MyCtrl'>Hi, it Ken. The current time is {{ken_time}}</p>
<p ng-controller='BarbieCtrl'>Hi, it Barbie. The current time is {{barbie_time}}</p>
</div>
Попробуем объяснить, что здесь не работает.
В вашем html вы определили приложение как демонстрацию и контроллер, который вы используете для barbie_time
, связан с приложением. и нет модуля приложения.
Также MyCtrl является независимым контроллером, который не связан ни с одним модулем. Не с демо.
Чтобы заставить его работать, вам необходимо связать контроллер с demo
модулем и подключить контроллер, используя директиву ng-controller
как показано ниже.
<div ng-app='demo'>
<p ng-controller='MyCtrl'>Hi, it Ken. The current time is {{ken_time}}</p>
<p ng-controller="BarbieCtrl">Hi, it Barbie. The current time is {{barbie_time}}</p>
var demo = angular.module('demo', []);
function MyCtrl ($scope) {
$scope.ken_time = new Date().toTimeString();
}
demo.controller('BarbieCtrl', function($scope) {
$scope.barbie_time = new Date().toTimeString();
});
Посмотрите на свою рабочую скрипту: http://jsfiddle.net/b18w58kc/5/ Новичка путают со словом app
потому что это очень часто для определения модуля в угловом. app
является ключевым словом в AngularJS, чтобы работать как модуль, вы должны определить его для работы как модуль. Надеюсь, это поможет вам.
Вы app.controller
доступ к app.controller
, а не demo.controller
.
var demo = angular.module('demo', []);
function MyCtrl ($scope) {
$scope.ken_time = new Date().toTimeString();
}
demo.controller('BarbieCtrl', function($scope) {
$scope.barbie_time = new Date().toTimeString();
});
Кроме того, вам нужно будет определить контроллер для вашего Barbie Time:
<p ng-controller='BarbieCtrl'>Hi, it Barbie. The current time is {{barbie_time}}</p>