У меня проблема с модификацией вложенного свойства. Как просмотреть эти вложенные свойства в задаче.массив истории? Или как изменить $scope.$ watch?
Вот планкер. Щелкните значок keyboard_arrow_up.
http://plnkr.co/edit/ZCIU5gNwWfWdIOnz0ykb
<body ng-controller="EditController as ec">
<!-- task history -->
<table>
<thead>
<tr>
<th>Date</th>
<th>From</th>
<th>To</th>
<th>Time</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in ec.task.history">
<td>{{ item.startTime | date:'yyyy-MM-dd'}}</td>
<td>
<div>
<div>
<i class="material-icons" ng-click="ec.addHour(item.startTime)">keyboard_arrow_up</i>
<p style="margin: 0px 0px 0px 0px">{{ item.startTime | date:'HH'}}</p>
<i class="material-icons" ng-click="ec.substractHour()">keyboard_arrow_down</i>
</div>
<div>
<p style="margin: 0px 0px 0px 0px">:</p>
</div>
<div>
<i class="material-icons">keyboard_arrow_up</i>
<p style="margin: 0px 0px 0px 0px">{{ item.startTime | date:'mm'}}</p>
<i class="material-icons">keyboard_arrow_down</i>
</div>
</div>
</td>
<td>{{ item.stopTime | date:'HH:mm:ss '}}</td>
<td>{{ item.dt | formatDuration }}</td>
</tr>
</tbody>
</table>
Функции EditController…
function addHour(timestamp) {
console.log(timestamp);
var tmp = new Date(timestamp);
tmp.setHours(tmp.getHours() + 1);
timestamp = tmp.toISOString();
}
$scope.$watch(angular.bind(self.task.history, function() {
return self.task.history;
}), function(oldVal, newVal) {
console.log(oldVal);
console.log(newVal);
}, true);
Вы пробовали это с
$scope.$watchCollection
??смотрите: https://www.bennadel.com/blog/2566-scope-watch-vs-watchcollection-in-angularjs.htm для некоторых фоновой информации.
Попробовать это.
$watch или $watchCollection не работает. Я изменил
addHour
функцию и передаюitem
объект иproperty
параметр (как строку). Теперь мне не нужно использовать $watch или $watchCollection.Я использую
вместо