繁体   English   中英

我将$ scope替换为变量,现在我的角度应用程序不起作用

[英]I replaced $scope to a variable and now my angular application doesn't work

我正在做一个Angular应用程序,并且我读到不要使用$ scope这是一个好习惯。 所以我替换了一个变量,现在数据没有出现在我的页面上:
就像这样:

observatoryApp.controller('AppController', function AppController($scope, $http){
  var $scope = this;
  $scope.years = [];
  $http.get('json/years.json').then(function(response){
    $scope.years = response.data;
    $scope.data = $scope.years[0];
  });

现在是这样的:

observatoryApp.controller('AppController', function AppController($http){
  var self = this;
  self.years = [];
  $http.get('json/years.json').then(function(response){
    self.years = response.data;
    self.data = self.years[0];
  });

并且数据没有显示在index.html页面上:

<body ng-controller="AppController">
  ...
  <select class="year form-control"
    ng-options="year.id for year in years"
    ng-model="data">
  </select>
  ...
</body>

我做错了什么?

我读到这是个好习惯,不要使用$ scope

那将是在使用controllerAs别名作为替代的情况下。

除非使用该别名,否则将使用注入的$scope为其分配模型属性。 您将永远不会做var $scope = this;

您需要为控制器添加别名。

示例:将ng-controller="ctrlName"更改为ng-controller="ctrlName as vm"

<body ng-controller="AppController as vm">
  ...
  <select class="year form-control"
    ng-options="year.id for year in vm.years"
    ng-model="data">
  </select>
  ...
</body>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM