我尝试将一个参数从指令传递给控制器中定义的方法。
我使用隔离范围。
这是Fiddle中的相关代码和Demo:
的HTML
<div ng-controller="MapCtrl">
<map id="map_canvas" call='callMe()'></map>
</div>
JS
var module = angular.module('googleMap', []);
module.directive('map', function() {
return {
restrict: 'E',
replace: true,
scope:{
callMe : '&call'
},
template: '<div></div>',
link: function(scope, element, attrs) {
console.log(element);
/* ... */
scope.callMe('hey');
/* ... */
}
};
});
function MapCtrl($scope) {
$scope.callMe = function(val){
alert(val);
};
}
我为什么得到val=undefined
?它应该是hey
谢谢,
您需要注释您的函数参数:
小提琴
视图:
<map id="map_canvas" call='callMe(param)'></map>
指示:
scope.callMe({param: 'hey'});
在文档中对此进行了解释(尽管有些含糊):
&或&attr-
提供一种在父作用域的上下文中执行表达式的方法。如果未指定attr名称,则假定属性名称与本地名称相同。给定和小部件的作用域定义:{localFn:’&myAttr’},然后隔离作用域属性localFn将指向count
= count +
value表达式的函数包装。通常希望通过表达式将数据从隔离范围传递到父范围,这可以通过将局部变量名称和值的映射传递到表达式包装器fn中来完成。例如,如果表达式为增量(金额),则可以通过将localFn调用为localFn({amount:22})来指定金额值。
问题内容: 我想知道是否有一种方法可以将参数传递给指令? 我想做的是从控制器添加一个指令,如下所示: 是否可以同时传递一个参数,以便我的指令模板的内容可以链接到一个作用域或另一个作用域? 这是指令: 如果我想使用相同的指令但使用$ scope.title2怎么办? 问题答案: 这是我解决问题的方法: 指示 控制者 现在,我可以通过同一指令使用不同的作用域,并动态附加它们。
问题内容: 看看这个小提琴,我必须更改什么,才能使用我在HTML中定义的参数来评估模板中的表达式?因为我通过了SAVE按钮,所以它应该调用控制器的- function? 我看不出来。感谢帮助! 问题答案: 您可以按照Roy的建议设置两种方式的数据绑定。因此,如果您既想要又绑定到本地范围,则可以 由于要传递这些值,因此可以在指令的控制器中访问它们。但是,如果您想在父作用域的上下文中运行一个函数,这似
问题内容: 在上一个问题之后,我现在尝试从指令中调用父控制器上的方法。我得到一个未定义的参数。这是我的工作: 和脚本: 调用updatePerson方法时,person是未定义的。 jsfiddle在这里:http : //jsfiddle.net/graphicsxp/Z5MBf/7/ 问题答案: 只需简单地如下更改您的html 您没有通过updatePerson传递“人”,这就是为什么它不起作
问题内容: 我有一个指令,这是代码: 我想呼吁用户采取行动。操作按钮不在指令上。 从控制器呼叫的最佳方法是什么? 问题答案: 如果要使用隔离作用域,则可以使用来自控制器作用域的变量的双向绑定来传递控制对象。您还可以在页面上使用相同的控件对象来控制同一指令的多个实例。
问题内容: 我有多个调用同一控制器的路由,我想将不同的变量传递给它。 我知道我可以使用“解决”对象: 传递值作为依赖项: 这种方法的问题是,如果其他路线上缺少resolve对象,则我的应用程序崩溃,并且我想传递可选的参数。 有什么方法可以(从路由提供者)将特定的参数传递给Controller? 谢谢 问题答案: 路由: 访问:在控制器中注入$ route,然后使用它