$scope 内の変数を更新する $scope 内の関数があります-関数が終了すると、変数が元の値に「復元」されるという問題があります。
function MyCtrl($scope, $http, $templateCache) {
$scope.changeWeek = function (direction) {
console.log(direction);
console.log($scope.firstdayofweek);
var d = new Date();
direction == '7' ? d.setDate($scope.firstdayofweek.getDate() + 7) : d.setDate($scope.firstdayofweek.getDate() - 7);
$scope.firstdayofweek = d;
console.log(d);
console.log($scope.firstdayofweek);
}
$scope.firstdayofweek = getMonday(new Date());
$http({ method: 'GET', url: '/TimeSheet/Services/GetSubEmployees.ashx', cache: $templateCache }).
success(function (data, status) {
$scope.status = status;
$scope.fullname = data.fullname;
$scope.accountname = data.accountname;
$scope.domain = data.domain;
$scope.subemployees = data.subemployees;
$scope.domain == 'IL' ? $scope.firstdayofweek.setDate($scope.firstdayofweek.getDate() - 1) : $scope.firstdayofweek.setDate($scope.firstdayofweek.getDate());
}).
error(function (data, status) {
$scope.data = data || "Request failed";
$scope.status = status;
});
}
マークアップ:
<div class="row" >
<div class="span1"><a href="#" ng-click="changeWeek(-7)"></a></div>
<div ng-repeat="n in [] | range:7" class="span1">
{{(firstdayofweek.getDate()+$index)+'/'+(firstdayofweek.getMonth()+1)}}
</div>
<div class="span1"><a href="#" ng-click="changeWeek(7)"></a></div>
</div>
$scope.firstdayofweek は関数内で期待どおりに更新されます (+-7 日) が、{{firstdayofweek}} は、関数を呼び出すたびに「今」の更新日を示します。(コンソールには正しい更新日が表示されます)
コントローラーは毎回更新されると思います-それを防ぐ方法はありますか?
ありがとう!