2014-03-06 81 views
3

我正在編寫我的代碼根據谷歌標準......甚至不知道這個語法是什麼調用,但它不同於控制器的Angular-UI示例代碼,我得到$ modalInstance的注射器錯誤:(

var myControllers = angular.module('myControllers', ['ngCookies','ui.bootstrap']); 

myApp.controller('LoginDialogCtrl', ['$scope', '$modalInstance', 'Auth', function($scope, $modalInstance, Auth) { 
    $scope.login = function() { 
    // Close dialog 
    $modalInstance.dismiss('Logged in'); 
    }; 
}]); 

myApp.controller('AuthCtrl', ['$scope', '$modal', 'Auth', function($scope, $modal, Auth) { 
    $scope.openLoginDialog = function() { 
    var modalInstance = $modal.open({ 
     templateUrl: 'partials/auth/login.html', 
     controller: myApp.LoginDialogCtrl, 
     } 
    }); 
    }; 
    ... 
}]); 

對話框打開罰款,但在用戶登錄後,但我得到的注射器錯誤這條線:

myApp.controller('LoginDialogCtrl', ['$scope', '$modalInstance', 'Auth', function($scope, $modalInstance, Auth) { 

我已經測試過它這樣,它似乎工作,這實在是煩人:

var ModalInstanceCtrl = function ($scope, $modalInstance) { 
    $scope.ok = function() { 
    $modalInstance.close(); 
    }; 

    $scope.cancel = function() { 
    $modalInstance.dismiss('cancel'); 
    }; 
}; 

它是否與我的控制器被初始化的方式有關,並且在初始化時它不知道$ modalInstance?我如何完成這項工作?

+2

您的myApp.controller不應該是myControllers.controller嗎? – miqid

回答

-2

myApp.LoginDialogCtrl - 它是什麼?

看看這個簡單的例子:http://plnkr.co/edit/JGNmJpBQZtd7pgBVNdSl?p=preview

+0

我跟着你的代碼,它看起來像我採取了同樣的方法,並再次沒有工作。這個問題似乎是如何讓注入到LoginDialogCtrl的$ modalInstance – SomethingOn

+0

你可以用bug創建一個plnkr例子嗎? 你得到了什麼錯誤信息? – Gm0t

1

兩件事情吸引了我的注意。

  1. 您可以使用ModalInstanceCtrl變量控制屬性,因爲它是一個函數。但是,如果你註冊控制器,那麼你不能使用myApp.LoginDialogCtrl。而是使用其名稱'LoginDialogCtrl'。 像這樣:

    controller: 'LoginDialogCtrl' 
    
  2. 我有點糊塗了,你聲明模塊myControllers但再定義一些其他的模塊對myApp控制器上。似乎合乎邏輯地將myControllers各處而不是myApp
2

看到這個答案:AngularJS inject issue with Angular Bootstrap modal

我遇到同樣的問題,因爲你。我在部分內部有一個ng-controller指令。消除後,問題就消失了。

+0

爲了詳細說明觸摸,模式已經將控制器打開,並且沒有其他注射器可以使用modalInstance。在模態標記中再次聲明控制器會導致您看到的錯誤。所以從你的模板中刪除ng-controller。 – kroolk

相關問題