angularjs - unfocus - ng-model
¿Cómo pasar la acción ejecutable ng-click(&) en la variable a la directiva? (1)
Vista HTML con directiva:
<div click aaa="aaa()" action="action"></div>
Controlador: me gusta pasar la función bbb () en $ scope.action:
app.controller(''MainCtrl'', function($scope) {
$scope.aaa = function () { alert(''aaa''); }
$scope.bbb = function () { alert(''bbb''); }
$scope.action = ''bbb()'';
});
Directiva:
app.directive(''click'', function () {
return {
scope: {
aaa: ''&'',
action: ''&''
},
template:
''<button ng-click="aaa()">show aaa (work ok)</button>'' +
''<button ng-click="action">show bbb (not work)</button>'' +
''<br>How to pass ng-click action in variable into directive?''
}
});
No sé cómo evaluar la action
para ser reemplazado por bbb()
.
aquí está plunker: http://plnkr.co/edit/d8DtsNARKPPJwk2SO2WJ
$scope.action
necesita ser un puntero a $scope.bbb
y no solo una cadena que hace referencia a él sin apretar. "bbb()
en el controlador no significa nada, mientras que $scope.bbb()
es lo que usted creó y necesita usar. Cuando está en HTML, $scope
está implícito, por lo que puede salirse con la suya escribiendo simplemente aaa()
En su plantilla y su HTML, también debe llamar a la action
, del mismo modo que llama aaa
.
HTML
<div ng-app="app" ng-controller="MainCtrl">
<div click aaa="aaa()" action="action()"></div>
</div>
JavaScript
var app = angular.module(''app'', []);
app.directive(''click'', function () {
return {
scope: {
aaa: ''&'',
action: ''&''
},
template:
''<button ng-click="aaa()">show aaa (work ok)</button>'' +
''<button ng-click="action()">show bbb (not work)</button>'' +
''<br>How to pass ng-click action in variable into directive?''
}
});
app.controller(''MainCtrl'', function($scope) {
$scope.aaa = function () { alert(''aaa''); }
$scope.bbb = function () { alert(''bbb''); }
$scope.action = $scope.bbb;
});