2016-01-28 121 views
0

如何在配置指令中使用像解析一樣的東西? 我有這樣的代碼:在指令中解析AngularJS

​​

,因爲我寫的「PARAMS:[......」我可以在我的控制器使用「PARAMS」在我的.config 但現在我想用這個「PARAMS」我指令:

.directive('mapsysitem', ['$location', '$routeParams', '$freshmark', 
    function($location, $routeParams, $freshmark) { 
     'use strict'; 

     return { 
      restrict: 'E', 
      require: '^mapsyslist', 
      scope: { 
       zoomlist: '@', 
       item: '=', 
       skey: '=', 
       select: '&' 
      }, 
      replace: true, 
      templateUrl: 'templates/map/mapsysitem.tpl.html', 

      controller: ['$element', '$scope', 'System','$filter','Params', 
       function($element, $scope, System, $filter, Params) { 
        ..... 
      }] 

     }; 
}]); 

如果我將 「PARAMS」 添加到控制器選項,我將有 「未知提供商:paramsProvider < - 參數數量」。我能如何解決這個問題?求你了

+2

使用這個'Params'應在指令工作了。 'params'你可以簡單地通過雙向綁定進入它。 – dfsq

回答

-1

我不認爲你可以得到你的指令的控制器的範圍或屬性值,所以如果你不能使用服務(或$ rootScope也許)來共享這些值(並觀察變化)。

否則,您可以使用鏈接功能。你可以在這裏訪問範圍和屬性。這裏是一個關於控制器/鏈接功能的角度網站的報價:

最佳實踐:使用控制器,當你想暴露一個API到其他指令。否則使用鏈接。

這意味着「使用鏈接功能,除非你確實需要控制器」。

https://docs.angularjs.org/guide/directive

0

由於您使用您的指令中一個孤立的範圍,你將需要傳遞參數作爲指令節點

屬性的應用程序控制器設置範圍

.controller('ConfigCtrl', ['$scope','$route','$routeParams','params','Params', 
function($scope,$route,$routeParams,params,Params){ 
     $scope.myParams=Params 

然後通過$ scope.myParams該指令

<mapsysitem param='myParams'></mapsysitem> 

然後創建雙向你的範圍結合

  scope: { 
       param:'='  
      }, 

然後你就可以在指令控制器

controller: ['$element', '$scope', 'System','$filter', 
      function($element, $scope, System, $filter) { 
       var myParams= scope.param 
+0

MB我寫的不清楚,「Params」和「params」是兩個不同的選項。 控制器「ConfigCtrl」在另一個文件中,然後指令「mapsysitem」。 「resources.params」中生成的「params」。 我所做的都是你寫的,但「myParams」是未定義的。 –