AngularJS-在回调中包含变量
AngularJS - Include variable in a callback
我有一个角度指令,它允许以以下方式传递回调:
angular
.module('app')
.directive('myDirective', myDirective);
function myDirective() {
return {
bindToController: {
buttonClick: '&'
},
controller: 'MyController',
controllerAs: 'vm',
restrict: 'E',
scope: {},
templateUrl: '<div><button data-ng-click="vm.buttonClick(''hello'')">Click me</button>'
};
}
然后在我的父HTML中,我有
<my-directive button-click="ctrl.myCallback()"></my-directive>
最后在我的父控制器中,我有
function myCallback(msg) {
alert('message is: ' + msg);
}
目标是显示"hello"或传递给回调的任何数据,但这不起作用。
我做错什么了吗?当没有指定参数时,它可以工作
感谢
仅供参考,这里有Plunker的链接(http://plnkr.co/edit/F6TafMWD3EWqVCCLaMys?p=preview)
使用&
时,需要调用带有1个参数的函数,该参数是要传递的参数的映射。
<my-directive button-click="ctrl.myCallback(msg})"></my-directive>
return {
//...
template: '<div><button data-ng-click="vm.buttonClick({msg: ''hello''})">Click me</button>'
}
如果你的函数有两个参数,你会得到:
<my-directive button-click="ctrl.myCallback(msg1, msg2})"></my-directive>
return {
//...
template: '<div><button data-ng-click="vm.buttonClick({msg1: ''hello'', msg2: '''there''})">Click me</button>'
}
function myCallback(msg1, msg2) {
alert('message is: ' + msg1 + ' ' + msg2);
}
该GIST在指令绑定方面非常详尽:https://gist.github.com/CMCDragonkai/6282750
看看点8
另一个好的资源是:https://thinkster.io/egghead/isolate-scope-am
更新:我更新并修复了你的plunkr:http://plnkr.co/edit/W4RnZeCaxfCbVcYeKXLD?p=preview
- 请小心选择角度版本1.x
- 如果使用
bindToController
,则指令控制器必须是一个函数。空函数可以 - 仔细看看我是如何命名用于调用
myCallback
的变量的,并将其与第二个plunkr进行比较:http://plnkr.co/edit/OvCXC0jeycIOxyoQ0R9w?p=preview如果你需要更多关于这一点的解释,请告诉我
看看这个例子。将$compile用于绑定事件范围
var app = angular.module('app', []);
app.controller('MyController', function($scope){
$scope.buttonClick = function(msg ){
console.log(msg);
$scope.msg = msg;
};
}).directive('directive', function($compile) {
return {
restrict : 'E',
link : function(scope, element){
var content = $compile('<div><button type="button" ng-click="buttonClick(' + "'Test Msg'" + ')">Click me</button> {{msg}}')(scope);
element.append(content);
}
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="MyController">
<directive></directive>
</div>
相关文章:
- 将标量变量转换为javascript中包含变量的数组
- 为什么不是't my元素:使用变量而不是字符串时包含(变量)功?jquery
- Javascript-将包含变量的html字符串作为参数传递
- td:包含变量中的搜索字符串
- 检索本身包含变量的 Jquery 变量名的值
- 如何在 ngModel 中包含变量
- JavaScript-设置数组中包含变量的数组
- Javascript-包含变量的多个数组
- javascript标记中包含变量的AngularJS JSON数组
- 为什么在循环的Javascript中包含变量声明
- 在 JavaScript 常规模式中包含变量
- 有没有办法返回一个包含变量的字符串
- 如何在 AJAX 数据中包含变量
- 如何创建包含变量作为键的 jquery 数组
- 在此 JavaScript 代码中包含变量的正确语法是什么
- 我需要在表单提交后显示一条包含变量(表单中的答案)的消息
- 如何将数据转换为json类型,其中数据包含变量
- 在URL中包含变量
- 通过属性和包含变量将Object传递给指令
- 大写元音:包含变量会使If语句的行为异常