<a custom-attr='{{ controller.object.value }}' data-ng-model='controller.object.value'>
.directive('customAttr', function () {
return {
require: 'ngModel',
controller: 'ControllerName',
controllerAs: 'cName',
link: function (scope, el, attr, ctrl) {
el.on('click', function ($event) {
if (ctrl.$viewValue && attr.customAttr) { // breakpoint
}
})
}
}
})
在指令第一次运行时查看attr.customAttr
中的正确值。
在指令链接函数内的if语句的断点处停止,我希望看到一个布尔值。我已经使用$log.log()
验证了模型中的布尔值是否正确。不幸的是,第一次运行指令时,attr.customAttr
求值为模型值(调试器中的'controller.object.value'
)的引用字符串,然后在指令的后续迭代中,它正确地计算到布尔值。我尝试从属性中删除花括号,我只得到一个不变的空字符串。
我该怎么做才能使模型值第一次正确评估?
注意:我之前使用数值做了类似的版本没有问题。关键区别似乎是工作版本在输入元素上,并且具有ngModel和ngValue属性。