我尝试在以下代码中将notes
附加到$scope
而不是控制器(this):
angular.module('NoteWrangler')
.controller('NotesIndexController', ['$http', function($http) {
var controller = this;
$http({method: 'GET', url: '/notes'}).success(function(data) {
controller.notes = data;
});
}]);
所以,当我定义$scope
时,如下所示:
.controller('NotesIndexController', ['$scope', function($scope)
它不起作用,因为我需要在某处定义$http
才能在代码中使用它?那么,我应该在哪里定义$scope
呢?
我已提及this文档。
答案 0 :(得分:1)
你没有定义" $scope
,它是一个为您管理的框架对象。
如果您使用ControllerAs语法,您的控制器可以作为属性添加到$scope
。否则,您需要引用可通过Angular Dependency Injection注入的$scope
对象。您可以为应用程序注入尽可能多的依赖项。
因此,您可以使用的两个选项是:
ControllerAs:
angular.module('NoteWrangler')
.controller('NotesIndexController', ['$http', function($http) {
var controller = this;
$http({method: 'GET', url: '/notes'}).success(function(data) {
controller.notes = data;
});
}]);
<div ng-controller="NotesIndexController as controller">
{{controller.notes}}
</div>
直接$scope
:
angular.module('NoteWrangler')
.controller('NotesIndexController', ['$scope', '$http', function($scope, $http) {
var controller = this;
$http({method: 'GET', url: '/notes'}).success(function(data) {
$scope.notes = data;
});
}]);
<div ng-controller="NotesIndexController">
{{notes}}
</div>
请注意,$scope
对象在第一个示例中是隐式的,在控制器代码中不是必需的,在第二个示例中是显式的。另请注意,$scope
有一些关于基元和原型继承的特定规则,因此始终建议在HTML绑定中使用一个点,这是ControllerAs语法自动执行的。
最终,选择使用哪种语法取决于您,但建议您在整个应用程序中保持一致,并始终引用$scope
或仅引用它以获取特殊属性#&# 39;达到任何其他方式。
答案 1 :(得分:0)
angular
.module('NoteWrangler')
.controller('NotesIndexController', ['$scope', '$http', function($scope, $http) {
$http({method: 'GET', url: '/notes'}).success(function(data) {
$scope.notes = data;
});
}]);
答案 2 :(得分:0)
不确定您使用var controller = this;
的原因,但未注入$ http
您可以像
一样使用它.controller('NotesIndexController', ['$scope', '$http', function($scope, $http){
$http({method: 'GET', url: '/notes'})
.success(function(data) {
$scope.notes = data;
});
}]);