Sun*_*hah 5 angularjs angularjs-scope
为什么格式化程序不适用于隔离范围?这是有角度的错误还是我做错了什么?
这包含隔离范围,不起作用: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);
});
Run Code Online (Sandbox Code Playgroud)
这不包含隔离和范围工作正常: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);
});
Run Code Online (Sandbox Code Playgroud)
这与格式化程序没有任何关系,而是与ngModel
您尝试传递它的值无法访问的事实.当您创建隔离范围时,myDate
该ngModel
指令不再可用(因为您已经创建了一个新的范围 - 隔离范围 - 没有myDate
它).作为证据,这里是一个不太有用的例子,myDate
根据传递给ngModel
属性的内容设置范围:http://jsfiddle.net/YbdXQ/78/
angular/angular.js#1069,"一个指令的隔离范围隔离了同一元素上的其他指令",讨论了这个问题:
例如,请注意我的自定义指令如何阻止ng-model工作
您可能还对此StackOverflow问题感兴趣,"ngModel和具有隔离范围的组件".
归档时间: |
|
查看次数: |
1929 次 |
最近记录: |