2014-07-12 17 views
0

我想創建彈出式模式,爲此我的控制器必須依賴於另一個控制器。未能在AngularJS中爲局部視圖注入控制器

下面是我的主要控制器文件,名爲product.js來定義模態實例。我採用了棱角分明的UI

var myStoreControllers=angular.module("myStoreController",['ui.bootstrap','myStoreModalController']); 

    myStoreControllers.controller('myStoreProductCtrl',function($scope,$modal,$log,ModalInstanceCtrl){ 

    $scope.message="Checking routing 123"; 


    $scope.items = ['item1', 'item2', 'item3']; 

     $scope.open = function (size) { 

     var modalInstance = $modal.open({ 
      templateUrl: 'assets/app/views/myModalContent.html', 
      controller: ModalInstanceCtrl, 
      size: size, 
      resolve: { 
      items: function() { 
       return $scope.items; 
      } 
      } 
     }); 

     modalInstance.result.then(function (selectedItem) { 
      $scope.selected = selectedItem; 
     }, function() { 
      $log.info('Modal dismissed at: ' + new Date()); 
     }); 
     }; 


    }); 


Below is my controller definition for the view. 

var myStoreModalController=angular.module("myStoreModalController",[]); 

myStoreModalController.controller('ModalInstanceCtrl',function($scope, $modalInstance, items){ 

    $scope.items = items; 
    $scope.selected = { 
    item: $scope.items[2] 
    }; 

    $scope.ok = function() { 
    $modalInstance.close($scope.selected.item); 
    }; 

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

}); 

的幫助,這一直給我的錯誤:

Error: [$injector:unpr] Unknown provider: ModalInstanceCtrlProvider <- ModalInstanceCtrl 

我不能弄個爲什麼這種依賴注入失敗。

+0

控制器僅在它們所限定的範圍內使用。如果你的ModalInstanceCtrl不在myStoreController作用域內的一個元素上,它將不會被看到。您可以嘗試創建模式服務並調用服務的功能,因爲服務是單例服務並且始終可用。 – mortsahl

回答

0

我做了修改按Cory建議,它工作正常。

精製代碼如下:

var myStoreControllers=angular.module("myStoreController",['ui.bootstrap','myStoreModalController']); 

    myStoreControllers.controller('myStoreProductCtrl',function($scope,$modal,$log,ModalInstanceCtrl){ 

    $scope.message="Checking routing 123"; 


    $scope.items = ['item1', 'item2', 'item3']; 

     $scope.open = function (size) { 

     var modalInstance = $modal.open({ 
      templateUrl: 'assets/app/views/myModalContent.html', 
      controller: 'ModalInstanceCtrl', 
      size: size, 
      resolve: { 
      items: function() { 
       return $scope.items; 
      } 
      } 
     }); 

     modalInstance.result.then(function (selectedItem) { 
      $scope.selected = selectedItem; 
     }, function() { 
      $log.info('Modal dismissed at: ' + new Date()); 
     }); 
     }; 


    }); 


Below is my controller definition for the view. 

var myStoreModalController=angular.module("myStoreModalController",[]); 

myStoreModalController.controller('ModalInstanceCtrl',function($scope, $modalInstance, items){ 

    $scope.items = items; 
    $scope.selected = { 
    item: $scope.items[2] 
    }; 

    $scope.ok = function() { 
    $modalInstance.close($scope.selected.item); 
    }; 

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

});