在控制器中,我在模板加载时有了这段代码:
$scope.pristine_timesheet = angular.copy($scope.timesheet);
在模板中,我想这样做:
<div ng-show="(timesheet != pristine_timesheet)">
<div class="button-bar">
<a class="button button-positive" ng-click="update(form)">Save changes</a>
<a class="button button-stable" ng-click="discard(form)">Discard changes</a>
</div>
</div>
出于某种原因,这总是显示按钮。我知道我可以使用$ dirty但是想知道为什么这不起作用。
答案 0 :(得分:0)
我通过扩展服务中的类来解决它:
angular.extend(Timesheet.prototype, {
compare: function(timesheet){
return ((timesheet.id == this.id) && (timesheet.notes == this.notes) && (timesheet.task_link_id == this.task_link_id) && (timesheet.time_start == this.time_start) && (timesheet.time_end == this.time_end));
}
在模板中我现在可以做到:
<div ng-show="!(timesheet.compare(pristine_timesheet))">
感谢PSL的解释。我也尝试过lodash isEqual,但那个对我不起作用:https://lodash.com/docs#isEqual