角度のある双方向バインディングとフィルターの問題でブロックされています。パラメーターによるフィルターを使用していますが、パラメーター値が別のディレクティブで変更された後、フィルターが適用されません。コードの一部を次に示します。
<div class="col-md-offset-4 col-md-4">
<calendar-select ng-model="dailyTimekeepingCtrl.selectedDay"> </calendar-select>
</div>
.......
<work-timekeepings-day timekeepings="dailyTimekeepingCtrl.timekeepingList"
day="dailyTimekeepingCtrl.selectedDay"></work-timekeepings-day>
コンポーネント定義:
var workTimekeepingsDay = TimekeepingsApp.component('workTimekeepingsDay', {
templateUrl : 'angular/components/work-timekeepings-day.html',
controllerAs: '$workTkDayCtrl',
bindToController: true,
controller: function() {
this.isTkCollapsed = true;
this.workTimekeepingTemplate='angular/popups/work-timekeeping-popup.html';
},
bindings : {
timekeepings : '=',
day: '='
}
});
コンポーネント テンプレート:
<p> {{($workTkDayCtrl.timekeepings | workTimekeeping : $workTkDayCtrl.day).length }} </p>
<p> {{$workTkDayCtrl.day | amDateFormat:'DD MM YYYY'}}</p>
dailyTimekeepingCtrl.selectedDay
ディレクティブを使用して変更され、双方向にバインドされます。
var calendarSelect = TimekeepingsApp.directive('calendarSelect', ['$timeout', function($timeout) {
return {
restrict : 'E',
scope : {
calendarDate : '=ngModel'
},
templateUrl : 'angular/calendar-select.html',
link: function (scope, element, attrs) {
scope.dayUp = function() {
scope.calendarDate.add(1, 'days');
};
...................
初めてトリガーされたとき、フィルターは正しく適用されます。dailyTimekeepingCtrl.selectedDay
親ページ/コントローラーで変更した後、day
バインド変数が正しく適用されます。ただし、結果は新しい値でフィルタリングされません。誰かが私が間違っていることのヒントを与えることができますか? ありがとう。