【问题标题】:AngularJS Two-Way-Binding: How can i prevent updating model on error?AngularJS 双向绑定:如何防止错误更新模型?
【发布时间】:2023-04-07 19:56:01
【问题描述】:

我正在调用一个以 JSON 格式返回数据的网络服务。我将它存储到一个名为 myrecipes 的变量中,并通过 rg-repeat 在网格中显示这些。这很好用!我已通过 ng-model 将数据库字段绑定到复选框。这也有效。现在我的要求:

我可以调用一个 webservice 函数来通过 ng-change 更新数据库中的当前项目。当调用成功时,模型会更新,数据库中的值也会更新。一切都好!

但是,如果我尝试通过 Web 服务更新数据库中的值时出现问题怎么办?模型(本地数据)正在更新,但数据库中的值没有!那可能不会发生!我怎样才能防止这种情况?我怎么可能捕获通过 ng-change 触发的单个项目并将模型中的值设置回之前的值?

问候 沼泽

【问题讨论】:

    标签: angularjs web-services angularjs-ng-repeat ng-repeat


    【解决方案1】:

    示例:

    <ul>
      <li data-ng-repeat="item in items">
      <input type="checkbox" data-ng-model="item.someProperty"data-ng-click="someFunction($index)"/>{{item.description}}
      </li>
    </ul>
    

    当用户点击复选框时,该函数将被调用,并传递项目的索引,这样你就可以得到项目数组中对象的索引,你可以用它做一些事情

    【讨论】:

    • 但是由于通过 ng-model 的双向绑定,模型也不会在项目更改时更新?
    • 对不起,我不明白,在这种情况下,当出现问题时,您可以提出新请求并仅填写项目。喜欢:$http(urlRequest, {params}).success(function(data){ items[index] = data; //data is the object with the real value });
    • 我想我应该再次查询数据库中的更新项目,并且应该将这个项目写回本地数据?
    • 是的。 将项目保存在另一个对象中,如果出现问题,您将“项目副本”复制到原始项目。喜欢:$scope.copiedItem = {properties}; $scope.functionCheckbox = function(index){ angular.copy($scope.items[index], $scope.copiedItem); $http.post(url, {params}).success(function(data){ $scope.items[index] = data; }).error(function(){ angular.copy($scope.copiedItem, $scope.items[index]); }) }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多