不确定度指令,传入参量类别,然后该指令列出该类别下的所有不确定度。
新增页面用到了三个该指令,只有最后一个成功,前两个都没有数据。
以下是指令源码:
使用严格的;/* * * @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> 代码,果然有问题。
前两个都是空的,最后一个数组有值。
想不明白,这里明明监听参量类别,并将范围<代码> 代码>的<代码> accuracyList 代码>设置了值啊?为什么没有呢?
<强>范围强>
尝试打印一下<代码> 代码>范围。
去关注范围<代码> 代码>的<代码> $ id> 代码就行了。
依次打印的是:
504 508//第一个指令 506 508//第二个指令 508 508//第三个指令
前两个指令执行时赋值的是一个<代码> 代码>范围,而过滤的又是另一个<代码> 代码>范围,所以过滤不出数据,最后一个是同一<代码> 代码>范围,所以正常输出。
<强>官方文档强>
HTML编译器- AngularJS
<代码> HTML编译器/代码>允许开发者教会浏览器一些新的语法,<代码> AngularJS 代码>称这个为指令。
代码编译器<代码> >是一个遍历DOM <代码> 代码>去搜寻属性的<代码> AngularJS 代码>服务,编译分为以下两个阶段。
-
<李> <代码> 编译代码>:遍历DOM <代码> 代码>并收集所有的指令,返回结果是一个