当对象不相等时显示丢弃和保存按钮

时间:2014-12-30 21:12:13

标签: angularjs

在控制器中,我在模板加载时有了这段代码:

$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但是想知道为什么这不起作用。

1 个答案:

答案 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