2015-03-31 50 views
1

我想執行的指令,該指令的功能,我想$ EVAL,包含了函數名和參數值的值:

Html頁面:

<select mydirective="action('pValue')"> 

AngularJS指令代碼:

app.directive('mydirective', function ($timeout) { 
return { 
    restrict: 'A', 
    link: function ($scope, element, attr) { 
      $timeout(function() { 
       $scope.$eval(attr.mydirective); 
     }); 
    } 
} 

我所預期的那樣,它會調用操作功能的範圍界定,並通過p值的函數參數。我怎樣才能使它工作?

回答

3

你想自動發生什麼,該功能將與值調用,這是EVAL的目的:

var app = angular.module('plunker', []); 
 

 
app.controller('MainCtrl', function($scope) { 
 
    $scope.name = 'World'; 
 
    $scope.action = function(val) { 
 
    alert(val); 
 
    } 
 

 
}); 
 

 
app.directive('mydirective', function($timeout) { 
 
    return { 
 
    restrict: 'A', 
 
    link: function($scope, element, attr) { 
 

 
     $timeout(function() { 
 
     $scope.$eval(attr.mydirective); 
 
     }); 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script> 
 
<div ng-app="plunker" ng-controller="MainCtrl"> 
 
    <select mydirective="action('pValue')"></select> 
 
</div>

+0

感謝。它的工作原理 – jamie2015 2015-04-01 02:10:26

+2

如何將元素$事件傳遞給方法操作? tuananh 2017-05-25 18:44:55

+0

@tuananh如果您想捕獲需要綁定的事件對象,此選擇的onclick事件。您不必在select中選擇函數參數:mydirective =「action('pValue')」。內部動作函數只檢查事件參數:alert(val,event); – CodeGems 2017-12-07 10:14:56

0

對於那些誰正在尋找一種方式來傳遞$事件信息定製指令方法見下面的例子:

TEMPLATE:

<div on-touch-end="onTouchEnd('some data')"> 
    TOUCH ME! 
</div> 

控制器:

$scope.onTouchEnd = function(data) { 
    console.log("onTouchEnd event with data", data, event); 
}; 

指令:

.directive('onTouchEnd', function() { 
    return { 
     restrict : 'A', 
     link  : function($scope, $element, $attr) { 
      $element.on('touchend', function(event) { 
       $scope.$apply(function() { 
        $scope.$eval($attr.onTouchEnd); 
       }); 
      }); 
     } 
    } 
})