2014-09-19 101 views
2

我有接受兩個函數的參數,的addElement方法和removeElement定製角指令:傳遞條件函數參數(「&」)到自定義角指令

.directive('myDirective', ['$window', function() { 
     return { 
      restrict: 'E', 
      replace: true, 
      scope: { 
       addElement: '&', 
       removeElement: '&' 
      }, 
      templateUrl: window.root + 'myDirectiveHtml.html' 
     }; 
    }]) 

我不能找出如何設置這兩個屬性有條件地在指令之外以及如何有條件地在指令內使用這兩個函數參數。我希望能夠傳遞一個函數或'null'到指令中,並在此基礎上編寫適當的邏輯。

目前我的兩個參數(未在上面的代碼中列出)在我的指令enableAdd和enableRemove中。我想刪除這兩個屬性,並根據上面解釋的邏輯來確定它們。

從外面看,目前,該指令被實例化這樣的:

<myDirective add-element="addElementFunc()" 
      remove-element="removeElement()" 
      enable-remove="{{ 1===1 ? 'true' : 'false' }}" 
      enable-add="{{ 1===1 ? 'true' : 'false' }}" /> 

在我的指導,目前,我使用的是啓用/禁用特性是這樣的:

<div ng-show="enableAdd" ng-click="addElement()">Add</div> 
<div ng-show="enableRemove" ng-click="removeElement()">Add</div> 

所以基本上我的問題是如何刪除enableAdd/enableRemove屬性,並根據addElement/removeElement是否爲null或函數來編寫該邏輯。

+0

你可以這樣做:'NG秀= 「addEelment」',那會的工作,如果沒有是因爲在'addElement'函數中傳遞的值是未定義的,並且'ng-show'的值爲false ...。 – 2014-09-19 14:52:46

+0

@MohammadSepahvand:這是一部分。那麼聲明該條件來設置指令的add-element屬性呢? – BlueChameleon 2014-09-19 14:55:36

回答

0

你可以這樣做, 在父控制器中創建兩個布爾值,然後通過它們將條件傳遞給指令。例如:

父控制器:

$scope.triggerAdd = false; 
$scope.triggerRmove = true; 

父HTML:

<myDirective add-element="triggerAdd ? addElementFunc() : false" 
       remove-element="triggerRmove ? removeElement(): false" 
       enable-remove="{{ 1===1 ? 'true' : 'false' }}" 
       enable-add="{{ 1===1 ? 'true' : 'false' }}" > 
    </myDirective>