[英]AngularJS doesn't enter controller
我正在學習Angular的官方教程 (目前是第8步)。 我的問題是,當我有清單時:
<ul class="phones">
<li ng-repeat="phone in phones | filter: query | orderBy: orderProp">
<a href="#/phones/{{phone.id}}"><span>{{phone.name}}</span></a>
</li>
</ul>
我單擊其中一個元素,什么都沒有發生(除非更改了url,但這似乎很正常,因為它在#
之前進行了哈希處理)。
我的js是:
app.js
:
var phonecatApp = angular.module('phonecatApp', [
'ngRoute',
'phonecatControllers'
]);
phonecatApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/phones', {
templateUrl: 'phone-list.html',
controller: 'PhoneListCtrl'
}).
when('/phones/:phoneId', {
templateUrl: 'phone-detail.html',
controller: 'PhoneDetailCtrl'
}).
otherwise({
redirectTo: '/phones'
});
}]);
controller.js
:
var phonecatControllers = angular.module('phonecatControllers', []);
phonecatControllers.controller('PhoneListCtrl', ['$scope', '$http',
function ($scope, $http) {
$http.get('js/phones.json').success(function(data) {
$scope.phones = data;
});
$scope.orderProp = 'name';
}]);
phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams', '$http',
function($scope, $routeParams, $http) {
alert($routeParams);
$http.get('app/phones/' + $routeParams.phoneId + '.json').success(function(data) {
console.log(data)
$scope.phone = data;
});
}]);
我能做什么? 我什至試圖復制兩個js文件的教程源,但這無濟於事。 實際上,不會觸發PhoneDetailCtrl
任何內容,也不會PhoneDetailCtrl
alert
或console.log
,更不用說get
。
您缺少HTML中的控制器聲明,只需添加所需的內容即可:(get函數位於PhoneDetailCtrl下/ phones列表位於PhoneListCtrl下)
<ul class="phones" ng-controller="PhoneDetailCtrl">
<li ng-repeat="phone in phones | filter: query | orderBy: orderProp">
<a href="#/phones/{{phone.id}}"><span>{{phone.name}}</span></a>
</li>
</ul>
請注意,您要聲明控制器的元素(在本例中為ul
)創建一個作用域,您可以在其中訪問控制器的作用域變量和函數。 因此, ul
之外的任何地方都將“盲目”到PhoneDetailCtrl
控制器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.