ionic 自定义指令无法获取绑定值,ngModelController.$viewValue
最近因为项目需要,自定义了一个外键指令,用于选择model中嵌套的model,可是在指令处于编辑状态的时候获取ng-model初始化值的时,在link函数中通过ngModelController获取$viewValue无法获取到,自己便通过另一个种方式解决了这个问题,虽然不是正规的解决方式,但是也算是解决了问题,在此分享出来,如果你遇到这个问题,或许可以参考,以下是解决方案: 首先说明一下以下的关于作用于的两个问题 1、angular的作用域问题
2、指令的作用域问题
上面说到,因为ngModelController不能正常解决ng-model值绑定的问题,因为没有能正常获取ngModelController.$viewValue的值,所以便通过作用进行手动获取,虽然没有具体查证,但是初步猜测ngModelController.$viewValue正式通过作用域嵌套的原理来进行获取的 以下是最终解决方案:scope.viewValue = ngModelController.$viewValue?ngModelController.$viewValue: null;
if(!scope.viewValue) {
var viewValueAttrs = attrs['ngModel'].split('.');
switch(viewValueAttrs.length) {
case 1: {
try{
scope.viewValue = scope.$parent[viewValueAttrs[0]];
}catch(e) {
scope.viewValue = null;
}
break;
}
case 2:{
try{
scope.viewValue = scope.$parent[viewValueAttrs[0]][viewValueAttrs[1]];
}catch(e) {
scope.viewValue = null;
}
break;
}
case 3: {
try{
scope.viewValue = scope.$parent[viewValueAttrs[0]][viewValueAttrs[1]][viewValueAttrs[2]];
}catch(e) {
scope.viewValue = null;
}
break;
}
default : {
scope.viewValue = null;
break;
}
}
}
代码解读:
对于angular指令的link,controller函数的如果不清楚,可以参考这里
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |