angularjs:具有隔离范围和传递参数的自定义指令

丙氨酸单抗

我在angularjs中创建了一个自定义指令,该指令具有隔离范围和传递参数。我尝试检查指令的控制器/链接中的参数,因为有时参数是一个数组,我只需要一个项目。但这不起作用(未定义的对象)。

-我的指令:

directives.directive('dir.displaytaxoname',  function () {
    return {
       restrict: 'E',
       replace: true,
       scope: {
          dfamily: '@' ,
          dgenus: '@',
          dsn: '@'               
       },
       controller: function ($scope) {

          console.log($scope.dsn); // empty string in the console but ok in the rendered view 
          /*function tools_isArray(arr) { return ( arr instanceof Array ); }*/
          // if the dfamily argument is an array i just want the first item 
          if(tools_isArray($scope.dfamily)){ $scope.dfamily = $scope.dfamily[0]; }
          if(tools_isArray($scope.dgenus)){ $scope.dgenus = $scope.dgenus[0]; }
          if(tools_isArray($scope.dsn)){ cl("indsn") ;  $scope.dsn = $scope.dsn[0]; }
       },
       templateUrl: "partials/elements/displaytaxoname.html"
    }
 });

-我的庙宇:

<span>
    {{dfamily}}&nbsp;<i ng-show="dgenus!=''">{{dgenus}}&nbsp;</i><i>{{dsn}}</i><br>
</span>

-调用指令:

<dir.displaytaxoname dfamily="{{specimen['T_FAMILY']}}" 
                     dgenus="{{specimen['T_GENUS']}}" 
                     dsn="{{specimen['T_SCIENTIFICNAME']}}">
</dir.displaytaxoname>

我尝试了许多与链接/控制器的组合,但不起作用。我该怎么办?

谢谢

hon2a

如果要将非字符串值传递给指令,则需要直接绑定到外部作用域表达式,而不是属性值(请参见文档),因为属性值始终是a String

另外,如果您不能100%确定在编译指令时数据已经存在于外部作用域中,则需要$watch使用数据,而不仅仅是使用初始值。

scope: {
    dfamily: '=',    // bind to expression instead of attribute value
    // ...
},
controller: function ($scope) {
    // watch property value changes instead of using just the initial value
    $scope.$watch('dfamily', function (value) {
        if (tools_isArray(value)) {
            // be extremely careful not to create an infinite cycle here
            // (better save the modified values to different variables)
            $scope.dfamily = value[0];
        }
    });
    // ...
}

<tag dfamily="specimen['T_FAMILY']" ...></tag>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

AngularJS将变量传递给具有继承(非隔离)范围的指令

来自分类Dev

从具有隔离范围的Angular指令访问自定义过滤器

来自分类Dev

AngularJS指令-隔离范围和继承范围

来自分类Dev

具有隔离范围的Angularjs指令需要澄清

来自分类Dev

将ngModel绑定到具有隔离范围的AngularJS指令

来自分类Dev

在Angularjs自定义指令中隔离范围-“ =”

来自分类Dev

angularjs:具有隔离范围和传递参数的自定义指令

来自分类Dev

具有templateUrl和隔离范围的角度测试指令

来自分类Dev

AngularJS:具有ng-repeat和隔离范围的指令

来自分类Dev

AngularJS指令将参数传递给隔离的范围函数

来自分类Dev

具有隔离范围的AngularJS指令-默认属性值

来自分类Dev

具有隔离范围的Angularjs TreeView指令

来自分类Dev

AngularJS-从自定义指令将参数从ng-repeat传递到控制器

来自分类Dev

将参数传递给具有隔离范围的嵌套指令

来自分类Dev

具有指令和隔离范围的controllerA

来自分类Dev

AngularJS通过自定义过滤器函数$ rootScope:infdig将范围传递给指令

来自分类Dev

具有隔离范围和非隔离范围的指令内部内容

来自分类Dev

双向绑定隔离范围在自定义指令中不起作用-AngularJS

来自分类Dev

具有给定范围和参数的自定义函数-Google Apps脚本

来自分类Dev

ng-repeat中具有隔离范围的自定义指令:循环项突然为空

来自分类Dev

angularjs-具有自动“参数”的自定义指令

来自分类Dev

AngularJS:ng-repeat在具有隔离范围的自定义指令上

来自分类Dev

具有自定义指令的动态ngModel和ngBind

来自分类Dev

AngularJS指令将参数传递给隔离的范围函数

来自分类Dev

具有隔离范围的AngularJS指令-默认属性值

来自分类Dev

在Angularjs自定义指令中隔离控制器

来自分类Dev

使用隔离的范围分离对象值定义自定义指令

来自分类Dev

具有隔离范围的角度自定义指令不会触发ng-click函数

来自分类Dev

AngularJS:具有多个模板的动态自定义指令

Related 相关文章

  1. 1

    AngularJS将变量传递给具有继承(非隔离)范围的指令

  2. 2

    从具有隔离范围的Angular指令访问自定义过滤器

  3. 3

    AngularJS指令-隔离范围和继承范围

  4. 4

    具有隔离范围的Angularjs指令需要澄清

  5. 5

    将ngModel绑定到具有隔离范围的AngularJS指令

  6. 6

    在Angularjs自定义指令中隔离范围-“ =”

  7. 7

    angularjs:具有隔离范围和传递参数的自定义指令

  8. 8

    具有templateUrl和隔离范围的角度测试指令

  9. 9

    AngularJS:具有ng-repeat和隔离范围的指令

  10. 10

    AngularJS指令将参数传递给隔离的范围函数

  11. 11

    具有隔离范围的AngularJS指令-默认属性值

  12. 12

    具有隔离范围的Angularjs TreeView指令

  13. 13

    AngularJS-从自定义指令将参数从ng-repeat传递到控制器

  14. 14

    将参数传递给具有隔离范围的嵌套指令

  15. 15

    具有指令和隔离范围的controllerA

  16. 16

    AngularJS通过自定义过滤器函数$ rootScope:infdig将范围传递给指令

  17. 17

    具有隔离范围和非隔离范围的指令内部内容

  18. 18

    双向绑定隔离范围在自定义指令中不起作用-AngularJS

  19. 19

    具有给定范围和参数的自定义函数-Google Apps脚本

  20. 20

    ng-repeat中具有隔离范围的自定义指令:循环项突然为空

  21. 21

    angularjs-具有自动“参数”的自定义指令

  22. 22

    AngularJS:ng-repeat在具有隔离范围的自定义指令上

  23. 23

    具有自定义指令的动态ngModel和ngBind

  24. 24

    AngularJS指令将参数传递给隔离的范围函数

  25. 25

    具有隔离范围的AngularJS指令-默认属性值

  26. 26

    在Angularjs自定义指令中隔离控制器

  27. 27

    使用隔离的范围分离对象值定义自定义指令

  28. 28

    具有隔离范围的角度自定义指令不会触发ng-click函数

  29. 29

    AngularJS:具有多个模板的动态自定义指令

热门标签

归档