Angularjs 自定义指令的Pass参数

Angularjs 自定义指令的Pass参数,angularjs,angular-directive,Angularjs,Angular Directive,使用带组件的1.5角 包含自定义指令的某些父HTML: <my-thing resetFields='$ctrl.bReset'></my-thing> 以下是用于虚构的组件声明: alert(ctrl.reset); // alert is called in controller, but shows undefined function myThingComponent() { this.controller = {};

使用带组件的1.5角

包含自定义指令的某些父HTML:

<my-thing resetFields='$ctrl.bReset'></my-thing>
以下是用于虚构的组件声明:

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
            };
        }
警报(ctrl.reset);//警报在控制器中调用,但显示未定义
函数myThingComponent(){
this.controller={};
this.bindings={};
var分量=此;
component.templateUrl='myThing.html';
component.controller=myThingCtrl;
component.transclude=true;
组件绑定={

resetFields:“为实现此特性,您已创建如下指令:

angular.module("yourModule")
    .directive("myThing",function(){
        return {
            ...
            restrict : "E",
            scope:{
                    reset:"=reset",
                    ....
            },
            .....
            }
        }
    });
以组件方式

angular.module('yourModule').component('myThing', {
...
  bindings: {
    reset: '='
  }
});
关键的一点是像上面一样使用范围属性,并说指令中的reset(在左边部分重置)属性与名为reset(=reset righth part)的范围属性绑定,其中“=”表示您有一个双向数据绑定


我希望这能帮助您

以下是我制作的一个简单指令中的一个示例,该指令渲染了一个动画计数器

function numberCounter($interval) {
    var directive = {
        restrict: 'E',
        scope: {
            start: '@start',
            end: '@end',
            speed: '@speed'
        },
        template: '<% number | number : 0 %>',
        link: link
    };

    ...
}
函数编号计数器($interval){
var指令={
限制:'E',
范围:{
开始:“@start”,
结束:“@end”,
速度:“@speed”
},
模板:“”,
链接:链接
};
...
}

然后您可以在link函数中使用scope.start、scope.end和scope.speed。start、end和speed是属性。

您的意思是
bReset
是您的
$scope
的一个变量吗?父组件控制器具有bReset值。您能给我们一个简单的示例(JSFiddle)吗?我们使用的是组件,没有模块?(我不熟悉这些角度细节)我遵循angular上的官方指南,我看到了使用模块。我整天都坐在那页上…还没有结果。现在看来我可以取得进展。你可以在控制器中引用这一点,你使用的是无作用域应用程序组件是指令而不是模块的新方式
function numberCounter($interval) {
    var directive = {
        restrict: 'E',
        scope: {
            start: '@start',
            end: '@end',
            speed: '@speed'
        },
        template: '<% number | number : 0 %>',
        link: link
    };

    ...
}