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);
     });
4

1 に答える 1

6

これはフォーマッタとは何の関係もありませんが、ngModel渡そうとしている値にアクセスできなくなったという事実です。分離スコープを作成している場合はmyDate、ディレクティブで使用できなくなりますngModel(新しいスコープ (分離スコープ) を作成しmyDateたため)。証拠として、属性に渡されたものに基づいてスコープを設定するあまり役に立たない例を次に示します: http://jsfiddle.net/YbdXQ/78/myDatengModel

angular/angular.js#1069、「1 つのディレクティブの分離スコープは、同じ要素の他のディレクティブを分離します」は、まさにこの問題について語っています。

たとえば、カスタム ディレクティブがどのように ng-model の動作を妨げているかに注目してください。

また、この StackOverflow の質問「分離されたスコープを持つ ngModel とコンポーネント」にも興味があるかもしれません。

于 2013-01-24T08:11:38.427 に答える