数组长度 内部功能不同

Array length Different in inner function

本文关键字:功能 内部 数组      更新时间:2023-09-26

>我做了一个自定义指令。 现在我从 chips-break 属性传递字符串数据,并将其从链接方法转换为数组。 它工作完美。 但是当我在 ng-keydown 方法中获取数组长度时,情况就不同了。 请帮助我。 提前感谢:

.HTML

<input-chips chips-break="32, 13, 188" style="width:80%"></input-chips>

.JS

    var app = angular.module("myApp", []);
    app.directive("inputChips", inputChipsFun);
    function inputChipsFun(){
      return{
        restrict : 'EA',
        scope : {
          chipsBreak : "@"
        },
        template: '<div class="chips"><div class="chips-item"></div><input type="text" ng-keydown="inputKeyDown($event, false)"/></div>',
        link : function(scope, elem, attr){
          scope.chipsBreak = scope.chipsBreak.split(",");
          console.log("Length of Chips Break First Time = "+scope.chipsBreak.length);
          scope.inputKeyDown = function($event, is_blur){
            console.log("Length of Chips Break Key Press = " + scope.chipsBreak.length);
          }

        }
      };
    }

请参阅此链接 : https://plnkr.co/edit/RpDwaqjS81DZlZFEzdj2?p=preview打开检查元素控制台并键入一些内容并查看差异

当你使用'@'时,它会得到一个字符串,这就是为什么你得到长度== 11,因为你得到'32, 13, 188'字符串的字符数。

查看此帖子以获取更多详细信息在 AngularJS 的指令作用域中,"@"和"="有什么区别?

编辑:

    link : function(scope, elem, attr){
      var x = scope.chipsBreak.split(",");
      console.log("Length of Chips Break First Time = "+scope.chipsBreak.length);
      scope.inputKeyDown = function($event, is_blur){
        console.log("Length of Chips Break Key Press = " + x.length);
      }
    }

如果你要做scope.chipsBreak = scope.chipsBreak.split(",")你的scope.inputKeyDown(这是一个函数(将得到scope.chipsBreak的初始值,这是一个字符串。