私は問題が発生していますが、ここからどこに行くのかは分かりません。角度のないデータバインディングと親スコープ
私のコードでは、私はモジュールを持っていて、モジュールの外側にある命令はそれ自身ではありますが、注入されています。
親スコープにregistrants
というオブジェクトがあります。この指示文を読み込むと、その指示文のすべてのアクティビティが親スコープを変更し、registrants
が更新されます。しかし、私は別の変数registrantCount
を持っていますが、これは登録者リストの長さが増えるにつれて更新されるはずですが、そうではありません。誰かがなぜ私に説明することができますか?
ここに、以下の関連するすべてのピースを含むコードのスニペットがあります。上の説明で言及していない変数がある場合、そのデータが正しいと仮定します完了。私が関心を持っている唯一の変数は、最初の問題の声明で述べた2つです。
angular.module('register.check', [])
.directive('attendees', function($http){
return {
restrict : 'EA',
scope : false,
templateUrl : 'template',
link : function(scope, elem, attrs){
angular.forEach(companies, function(c, key){
if(c.companyID == id){
scope.registrants = c.registrants; // this object is modified in the directive template
scope.registrantCount = scope.registrants.length; // this variable is located in the parent template, not the directive template
}
});
})
};
});
モジュール
angular.module('register', [])
.controller('Register', function($scope, $rootScope, $http){
$scope.registrants = {};
$scope.registrantCount = 0;
$http({
url : 'apiLink for initial data'
}).then(function(data){
$scope.employeeList = data.data.payload[0]; // initial list to allow the directive to function
});
});
ディレクティブは再びディレクティブは、登録者の親スコープのオブジェクトを変更しますが、それは登録者数は変更されません、またそれがされますのでご注意ください親変数の中で正しい長さを生成します。私はこの問題について非常に混乱しています。早めにすべての助けをありがとう!
ディレクティブを実装するHTMLを投稿できますか? – opticon
@ mark-hillでは、 'registrantts'とは異なり、' registrantCount'はリテラルバインディング(つまり 'number'型)なので、ディレクティブ内の更新が期待どおりに表示されないことがあります。カウントを別のオブジェクトの中に投げ込み、それが問題の可能性があることを確認するためにそれを更新してください。 – miqid