2017-04-20 13 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