AngularJS-将配置参数传递给指令
AngularJS - Passing configuration parameters to a directive
我想将参数(值和函数(传递给Angular指令。
我觉得Angular中存在这样的东西,但我找不到。也许我没有使用正确的搜索术语或术语。。。
示例
<my-directive my-param="55" some-title="My title" click-callback="myOnClickCallback">
</my-directive>
这可行吗?
你不必像其他答案那样为指令创建一个私有作用域。这取决于你想对指令做什么。
您可以简单地为指令创建一个私有作用域,查看其他答案,或者使用链接中的attr,或者如果您想共享父作用域,则可以编译函数。
link: function(scope, element, attrs) {
attrs.myParam === 55;
attrs.someTitle === "My Title";
attrs.clickCallback === myOnClickCallback;
}
我举了你问题的一个例子,作为示范
如果你对指令作用域中的"@"answers"="有疑问,请检查这个答案并阅读有角度的文档。
这里有一个工作演示,向您展示如何做到这一点。
app.directive('myDirective', function(){
return {
replace: true,
scope : {
myParam : '@',
someTitle : '@',
clickCallback: '&'
},
link: link,
template: '<p>{{someTitle}}</p>'
}
function link(scope, elem, attrs){
elem.bind('click', function(){
scope.clickCallback();
})
console.log(scope.myParam);
console.log(scope.someTitle);
}
})
因此,使用"@"(传递字符串时(和"&"将数据传递到指令作用域功能。
&将允许您在原始范围内传递回调并执行它们。
你可以阅读更多关于棱角分明的文档。
指令中有三个不同的选项
你想要使用的两个是
"&"将允许您传入一个函数
"@"将接受字符串
一些毫无价值的东西,camelCase属性将被angular自动解析,并在分配值时变成camelCase(注意hypen(
.directive("myDialog", function() {
return {
restrict: "E", // allows us to restrict it to just elements ie <my-dialog>
scope: {
"close": "&onClose", // putting a new name here allows us to reference it different on the html
// would become <my-dialog on-close="someFn()"></my-dialog>
"myParam": "@"
},
template: "<button type='button' data-ng-click='close()'>Dummy - {{myParam}}</button>"
};
});
.controller("fooCtrl", [function(){
var vm = this;
vm.someRandomFunction = function(){
alert("yay!");
};
}]);
最后的html看起来像
<div ng-controller="fooCtrl as vm">
<my-dialog on-close="vm.someRandomFunction()" my-param="55"></my-dialog>
</div>
沃斯阅读以及答案上的链接
Plnkr
只要尝试一下,你就会从属性中获得值
链接:
function(scope, element, attrs) {
alert(attrs.myParam);
},
.directive('myPane', function() {
return {
require: '^myTabs',
restrict: 'E',
transclude: true,
scope: {
/*
*Exmaple:
<my-directive my-param="55" some-title="My title" click-callback="myOnClickCallback">
</my-directive>
*/
myParam: '@',//@ is a string parameter
someTitle:'@',
/*is a double direction parameter
*(changable in the directive itself)
*You can pass by '=' objects and functions(with parameters)
*/
clickCallback:'='
},
link: function(scope, element, attrs) {
//Here you write functions of the directive and manipulate it's scope
},
templateUrl: 'template.html'
};
});
有关详细信息:https://docs.angularjs.org/api/ng/directive/ngClass.
祝你好运!
相关文章:
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 如何将角度输入指令数据传递给控制器
- 以角度将父指令变量传递给子指令
- JavaScript常量-作为参数传递或直接使用
- 如何将javascript对象作为参数传递到c#web服务中
- 将参数传递给函数
- 如何在angularjs中传递对象字段作为指令参数
- 如何将Gruntfile.js中的参数传递到webdriverio规范
- javascript,将参数传递给函数内部的闭包中的回调
- 在嵌套递归指令中将参数传递给父控制器方法
- 将对象作为参数传递给指令
- 如何在 AngularJS 中使用属性本身将可写参数传递给属性指令
- 如何在不覆盖父范围的情况下将参数传递给指令
- 如何将参数传递给将影响模板angularjs选择的指令
- AngularJS-将配置参数传递给指令
- 将参数传递给没有控制器的指令
- 是否可以传递一个带有vars的json对象作为angularjs指令参数
- 如何在Angular指令中传递参数给函数