Angularjs:如何使用“this”而不是$ scope

时间:2014-11-28 14:40:51

标签: angularjs

我想弄清楚如何转换它:

 app.controller('AnswersCtrl', ['$scope', '$http', '$log', '$ionicModal', '$state',     'SuspectService', 
function($scope, $http, $log, $ionicModal, $state, SuspectService) {

    $scope.suspects = [];

    SuspectService.getSuspects().then(function(data){
        $scope.suspects = data;
    });

    $scope.goToClues = function(){      
        $state.go('clues')
    };


   }]);

看起来像这样:

 app.controller('AnswersCtrl', ['$http', '$log', '$ionicModal', '$state', 'SuspectService', 
function($http, $log, $ionicModal, $state, SuspectService) {

    var self = this;

    self.suspects = [];

    SuspectService.getSuspects().then(function(data){
        self.suspects = data;
    });

    self.goToClues = function(){        
        $state.go('clues')
    };


   }]);

利用$ scope的代码可以工作,但利用这个(自我)的代码不起作用。

我尝试了几种变体而无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

看起来你几乎就在那里,为了让这个语法在你的控制器中工作,你还需要更改你定义控制器的标记,如下所示:

<div ng-controller="AnswersCtrl as vm">
    {{ vm.suspects[0].name}}
</div>

您可以在这里找到一个没有您定义的额外服务的工作示例:http://jsbin.com/zevaluside/3/edit

您还需要Angular 1.2或更高版本才能正常工作。