2013-01-24 39 views
5

爲什麼格式化程序不適用於隔離範圍?這是角度錯誤還是我做錯了什麼?爲什麼格式化程序不適用於隔離範圍?

這包含隔離範圍並不起作用: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/

restrict: 'A', 
link: function(scope, elm, attrs, ctrl) { 
     ctrl.$formatters.unshift(function(modelValue) { 
      console.log("In formatters" + modelValue); 
     return $filter('date')(modelValue); 
    }); 

回答

6

這沒有什麼關係格式化,而是ngModel不再有權訪問您試圖通過它的值。當您創建隔離範圍時,myDate不再可用於ngModel指令(因爲您已創建新範圍 - 隔離範圍 - 其上沒有myDate)。爲了證明這一點,這裏有一個not-so-useful example,基於什麼在給ngModel屬性通過設置的myDate的範圍:http://jsfiddle.net/YbdXQ/78/

angular/angular.js#1069,「一個指令的隔離範圍隔離在相同的元素其他指令,」這個非常問題談判:

例如,請注意我的自定義指令是如何防止工作

您還可能有興趣在this StackOverflow question, "ngModel and component with isolated scope" NG-模型。