$ scope未正确定义

时间:2015-09-12 01:59:49

标签: angularjs

我尝试在以下代码中将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文档。

3 个答案:

答案 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;
    });
}]);