把$scope函数传递给指令
Angular - pass $scope function to directive
我通过html属性将控制器$scope函数传递给指令,但由于某种原因,指令认为该函数是字符串。有提示吗?
HTML<modal show='createCustomer' create-new-customer='createNewCustomer()'></modal>
指令function modalDialog() {
return {
restrict: 'AE',
scope:{
createNewCustomer: '&'
},
replace: true,
transclude: true,
link: function(scope, element, attrs) {
scope.createNewCustomer = attrs.createNewCustomer;
console.log(typeof scope.createNewCustomer)
},
templateUrl: "./views/directive_templates/modal.html"
};
}
美元范围函数
$scope.createNewCustomer = function(){
alert('yo')
}
最好的,奥斯汀
你的代码应该是:
<modal show='createCustomer' create-new-customer='createNewCustomer'></modal>
很可能立即调用函数并传入结果
在您的指令中,您已经通过在隔离作用域中使用&
参数将scope.createNewCustomer
绑定到函数。但是,当您通过attrs
重新分配它时,您实际上用字符串值覆盖该函数。attrs
只是一个键值对数组,它们是元素中每个属性的字符串表示形式。
AngularJs指令允许你通过两种方式在作用域中使用'&'方法。第一种方法允许你在独立指令中传递参数。第二个让你在指令外传递参数,但调用INSIDE ISOLATED指令。像
<div my-dir func="myFunc(arg1,arg2,..)"></div>
<div my-dir func="myFunc(value1,value2,..)"></div>
如果你想了解更多,这里有一篇很酷的文章和例子:
http://www.w3docs.com/snippets/angularjs/angularjs-directive-scope-method.html相关文章:
- 从html创建一个指令,该指令按类名应用函数
- AngularJS指令单元测试中未定义的函数
- AngularJS指令部分应用的函数don'不起作用
- 角度指令's链接函数未被调用
- 从子指令调用指令函数不起作用
- 参数未在指令函数中传递
- 如何从 JavaScript 调用指令函数
- Angular.js调用控制器中的指令函数
- 将事件发送到范围中的角度指令函数
- 从父指令角度调用指令函数
- 在具有不同控制器的视图中使用ng-click和指令函数
- 通过参数将 mongo 文档 ID 传递给角度指令函数会抛出解析错误
- Angular指令——函数执行的正确顺序
- 又一个没有传递参数的Angular指令函数
- 如何使子链接指令函数在父控制器之前运行
- AngularJS中指令函数的执行顺序
- 在没有应用指令函数的指令内部重复
- 使用$scope.$parent.$$childHead从控制器访问指令函数.AngularJS中的functionNa
- angularjs设计.从另一个控制器调用指令函数
- 调用angularjs指令函数的范围问题