为什么格式化程序不适用于隔离范围?这是有角度的错误还是我做错了什么?
这包含隔离范围并且不起作用:http://jsfiddle.net/YbdXQ/56/ http://jsfiddle.net/YbdXQ/56/
restrict: 'A',
scope:{},
link: function(scope, elm, attrs, ctrl) {
ctrl.$formatters.unshift(function(modelValue) {
console.log("In formatters" + modelValue);
return $filter('date')(modelValue);
});
这不包含孤立的并且范围工作正常:http://jsfiddle.net/YbdXQ/57/ http://jsfiddle.net/YbdXQ/57/
restrict: 'A',
link: function(scope, elm, attrs, ctrl) {
ctrl.$formatters.unshift(function(modelValue) {
console.log("In formatters" + modelValue);
return $filter('date')(modelValue);
});
这与格式化程序没有任何关系,而是事实ngModel
无法再访问您尝试传递的值。当您创建隔离范围时,myDate
不再可供ngModel
指令(因为您创建了一个新作用域——一个隔离作用域——它没有myDate
在上面)。作为证明,这里有一个不太有用的例子 http://jsfiddle.net/YbdXQ/78/那套的myDate
基于传入的内容的范围ngModel
属性:http://jsfiddle.net/YbdXQ/78/ http://jsfiddle.net/YbdXQ/78/
角度/角度.js#1069 https://github.com/angular/angular.js/issues/1069,“一个指令的隔离范围隔离同一元素上的其他指令”,讨论了这个问题:
例如,请注意我的自定义指令如何阻止 ng-model 工作
您也可能对。。。有兴趣这个 StackOverflow 问题“ngModel 和具有隔离范围的组件” https://stackoverflow.com/questions/11896732/ngmodel-and-component-with-isolated-scope.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)