2017-04-20 59 views
0

我正在重构我的整个应用程序,并且我现在遵循John Papa的styleguide。
基本上我控制器从去:

.controller('TutorialCtrl', function($scope, $state, $ionicSlideBoxDelegate, $ionicSideMenuDelegate) { 

    $ionicSideMenuDelegate.canDragContent(false); 

} 

(使用匿名函数)

(function(){ 
    'use strict'; 

    angular 
    .module('app.tutorial') 
    .controller('TutorialCtrl', TutorialCtrl); 

    TutorialCtrl.$inject = ['$scope', '$state', '$ionicSlideBoxDelegate', '$ionicSideMenuDelegate']; 

    function TutorialCtrl() { 
     //do stuff here 
    } 

我不能看到如何得到它的工作。我正在使用匿名声明函数来使用$ ionicSideMenuDelegate,现在我想我必须声明一个函数来做到这一点。林不知道如果多数民众赞成的路要走,因为当我尝试:

angular.controller('TutorialCtrl', TutorialCtrl); 

TutorialCtrl.$inject = ['$state', '$ionicSlideBoxDelegate', '$ionicSideMenuDelegate']; 

function TutorialCtrl($ionicSideMenuDelegate) { 
     $ionicSideMenuDelegate.canDragContent(false); 
} 

它说:“$ ionicSideMenuDelegate.canDragContent不是一个函数”,当我尝试:

angular.controller('TutorialCtrl', TutorialCtrl); 

    TutorialCtrl.$inject = [ 
     '$scope', 
     '$state', 
     '$ionicSlideBoxDelegate', 
     '$ionicSideMenuDelegate' 
    ]; 
    $scope.$on('$ionicView.enter', function() { 
     $ionicSideMenuDelegate.canDragContent(false); 
    }); 

它说$范围未定义。我有点失落,并在这方面努力...任何帮助表示赞赏!不应该太难,但我不明白。我希望这足够清楚!

回答

1

当您使用$inject注入您的依赖关系时,您需要按照与函数参数相同的顺序传递相同的依赖关系!所以,以下应该工作!

angular.controller('TutorialCtrl', TutorialCtrl); 

TutorialCtrl.$inject = ['$state', '$ionicSlideBoxDelegate', '$ionicSideMenuDelegate']; 

function TutorialCtrl($state, $ionicSlideBoxDelegate, $ionicSideMenuDelegate) { 
     $ionicSideMenuDelegate.canDragContent(false); 
} 
+0

Oooh好吧我完全忘了!感谢它现在的作品! :) – DevMoutarde

+0

@DevMoutarde没有问题。这种错误总是发生:)高兴的帮助。请立即注册并接受定时关机 – tanmay

+0

当然,当我允许时会做! :d – DevMoutarde