angular.jsでng-initのような式評価を使う
参考: https://github.com/angular/angular.js/blob/master/src/ng/directive/ngInit.js#L63
angular.jsで
のようにngInit Directiveで指定した式を評価して実行したいようなangular.js Directiveを作りたい場合
index.html
<html ng-app="sample">
<head>
<script src="angular.min.js"></script>
<script src="main.js"></script>
</head>
<body>
<div ng-controller="SampleController">
<!-- ng-callのDirectiveを作ってクリックイベントを定義したのちに引数で指定されている式を評価する -->
<div ng-call="say()">click</div>
</div>
</body>
</html>
main.js
angular.module("sample", [])
.directive("ngCall", function() {
return {
compile: function() {
return {
pre: function(scope, element, attrs) {
element.bind("click", function() {
scope.$eval(attrs.ngCall);
});
}
};
}
};
})
.controller("SampleController", function($scope) {
$scope.say = function() {
alert("hoge");
};
});
別にpreじゃないといけないわけでも無いと思うので普通にdirectiveから関数返す形でデフォルトなイベントサイクル上でDirectiveを作用させる方式で良いと思いますけど、一応公式同様な感じで
んまぁっていう感じでscope.$eval(評価する式?)のような感じでやれば良いっぽいって事で