为自定义指令传递参数
Pass parameter for custom directive
使用 Angular 1.5 组件。
一些包含自定义指令的父 HTML:
<my-thing resetFields='$ctrl.bReset'></my-thing>
编辑:在这里我应该使用 reset-fields
而不是 resetFields
- 这就是我得到下面未定义的原因。
父控制器:
function parentController() {
var ctrl = this;
ctrl.bReset= true;
}
这是 myThing 的组件声明:
alert(ctrl.reset); // alert is called in controller, but shows undefined
function myThingComponent() {
this.controller = {};
this.bindings = {};
var component = this;
component.templateUrl = 'myThing.html';
component.controller = myThingCtrl;
component.transclude = true;
component.bindings = {
resetFields: '<' // one way binding is needed
};
}
如何发送此类参数并在自定义指令的控制器 - myThingCtrl 中使用它?
如果重置值为 true,我将执行一些操作,如果为 false,则执行另一个操作。
(通常我猜的问题是——如何从子组件中的父组件中读取值。)
为了实现这个提议,您创建了如下指令:
angular.module("yourModule")
.directive("myThing",function(){
return {
...
restrict : "E",
scope:{
reset:"=reset",
....
},
.....
}
}
});
组件方式
angular.module('yourModule').component('myThing', {
...
bindings: {
reset: '='
}
});
听到的关键点是像上面那样使用范围属性,并说指令中的重置(在左侧部分重置)属性与名为重置(=重置右边部分)的范围属性绑定,带有“=”说哟有两种方式的数据绑定。
希望对您有所帮助
这是我制作的一个简单指令的示例,该指令呈现动画计数器。
function numberCounter($interval) {
var directive = {
restrict: 'E',
scope: {
start: '@start',
end: '@end',
speed: '@speed'
},
template: '<% number | number : 0 %>',
link: link
};
...
}
那么你可以在link函数中使用scope.start、scope.end和scope.speed。开始、结束、速度是属性。
使用 Angular 1.5 组件。
一些包含自定义指令的父 HTML:
<my-thing resetFields='$ctrl.bReset'></my-thing>
编辑:在这里我应该使用 reset-fields
而不是 resetFields
- 这就是我得到下面未定义的原因。
父控制器:
function parentController() {
var ctrl = this;
ctrl.bReset= true;
}
这是 myThing 的组件声明:
alert(ctrl.reset); // alert is called in controller, but shows undefined
function myThingComponent() {
this.controller = {};
this.bindings = {};
var component = this;
component.templateUrl = 'myThing.html';
component.controller = myThingCtrl;
component.transclude = true;
component.bindings = {
resetFields: '<' // one way binding is needed
};
}
如何发送此类参数并在自定义指令的控制器 - myThingCtrl 中使用它? 如果重置值为 true,我将执行一些操作,如果为 false,则执行另一个操作。 (通常我猜的问题是——如何从子组件中的父组件中读取值。)
为了实现这个提议,您创建了如下指令:
angular.module("yourModule")
.directive("myThing",function(){
return {
...
restrict : "E",
scope:{
reset:"=reset",
....
},
.....
}
}
});
组件方式
angular.module('yourModule').component('myThing', {
...
bindings: {
reset: '='
}
});
听到的关键点是像上面那样使用范围属性,并说指令中的重置(在左侧部分重置)属性与名为重置(=重置右边部分)的范围属性绑定,带有“=”说哟有两种方式的数据绑定。
希望对您有所帮助
这是我制作的一个简单指令的示例,该指令呈现动画计数器。
function numberCounter($interval) {
var directive = {
restrict: 'E',
scope: {
start: '@start',
end: '@end',
speed: '@speed'
},
template: '<% number | number : 0 %>',
link: link
};
...
}
那么你可以在link函数中使用scope.start、scope.end和scope.speed。开始、结束、速度是属性。