AngularJS多指令范围问题的解决

  

  

不确定度指令,传入参量类别,然后该指令列出该类别下的所有不确定度。

  

新增页面用到了三个该指令,只有最后一个成功,前两个都没有数据。

  

 AngularJS多指令范围问题的解决

  

 AngularJS多指令范围问题的解决

  

 AngularJS多指令范围问题的解决

  

  

以下是指令源码:

        使用严格的;/* *   * @ngdoc指令   * @ name webappApp.directive: yunzhiAccuracyUncertainty   * @description   * # yunzhiAccuracyUncertainty   *不确定度指令   * zhangxishuo   */angular.module (“webappApp”)   .directive (yunzhiAccuracyUncertainty,函数(过滤器){   返回{   templateUrl:“视图/指令/yunzhiAccuracyUncertainty.html”,   限制:“E”,   范围:{   parameterCategory: '=',//参量类别   ngModel:‘=?/不确定度   },   链接:函数postLink(范围、元素attrs) {   var自我=;//初始化   自我。init=function () {//初始化不确定度空列表   范围。accuracyList=[];//监听参量类别   范围。美元的手表(parameterCategory, self.watchParameterCategory);//监听不确定度   范围。美元的手表(ngModel, self.watchNgModel);   };//监听参量类别   自我。watchParameterCategory=函数(newValue) {   如果(newValue,,newValue.id) {//设置不确定度列表   范围。accuracyList=newValue.accuracyUncertaintyList;//过滤数据   self.filter ();   }   };//监听不确定度   自我。watchNgModel=函数(newValue) {   如果(newValue,,newValue.id) {//设置默认选中   范围。选择=newValue;   }   };//过滤数据   自我。过滤器=function () {   angular.forEach(范围。accuracyList、功能(准确性){//过滤不确定度   准确性。_value=https://www.yisu.com/zixun/$过滤器(yunzhiAccuracyWithUnit)(精度);   });   };//更新模型   自我。调用updateModel=函数(选择){//更新数据   范围。ngModel=选择;   };//传给视图   范围。调用updateModel=self.updateModel;      self.init ();   }   };   });      

<强>尝试

  

尝试打印了一下<代码> scope.accuracyList>   

 AngularJS多指令范围问题的解决

  

前两个都是空的,最后一个数组有值。

  

 AngularJS多指令范围问题的解决

  

想不明白,这里明明监听参量类别,并将范围<代码> 的<代码> accuracyList 设置了值啊?为什么没有呢?

  

 AngularJS多指令范围问题的解决

  

<强>范围

  

尝试打印一下<代码> 范围。

  

 AngularJS多指令范围问题的解决

  

 AngularJS多指令范围问题的解决

  

 AngularJS多指令范围问题的解决

  

去关注范围<代码> 的<代码> $ id>   

依次打印的是:

        504   508//第一个指令   506   508//第二个指令   508   508//第三个指令      

前两个指令执行时赋值的是一个<代码> 范围,而过滤的又是另一个<代码> 范围,所以过滤不出数据,最后一个是同一<代码> 范围,所以正常输出。

  

  

<强>官方文档

  

HTML编译器- AngularJS

  

<代码> HTML编译器/代码>允许开发者教会浏览器一些新的语法,<代码> AngularJS 称这个为指令。

  代码编译器

<代码> 是一个遍历DOM <代码> 去搜寻属性的<代码> AngularJS 服务,编译分为以下两个阶段。