Javascript 如果数据是新的,则添加;如果数据不同,则更新

Javascript 如果数据是新的,则添加;如果数据不同,则更新,javascript,angularjs,Javascript,Angularjs,我正在尝试更新数据,而不是在图像更改时添加新数据。图像位于base64中 我也遵循了:就像我在下面尝试做的一样,但我已经尽了最大努力,但它更新不起作用。没有错误 仅供参考,我正在使用ngCropper 编辑:更新控制器代码 角码 app.controller("ProductAddCtrl", function($scope, $timeout, $resource, Product, Products, $location, Cropper) { $scope.pr

我正在尝试更新数据,而不是在图像更改时添加新数据。图像位于base64中

我也遵循了:就像我在下面尝试做的一样,但我已经尽了最大努力,但它更新不起作用。没有错误

仅供参考,我正在使用ngCropper

编辑:更新控制器代码

角码

      app.controller("ProductAddCtrl", function($scope, $timeout, $resource, Product, Products, $location, Cropper) {
        $scope.product = {item_name: '', price: '', category: ''}
        var file, data;

        $scope.saveImage = function(dataUrl) {
          if (!file || !data) return;
           if ($scope.product.currentImage){
              Cropper.crop(file, data).then(Cropper.encode).then(function(dataUrl) {
                ($scope.preview || ($scope.preview = {})).dataUrl = dataUrl;
                  Product.update({id: $scope.product.id }, {product: { item_name: $scope.product.item_name, category: $scope.product.category, price: $scope.product.price, item_image: dataUrl, filename: file.name}},function(){
            //  $location.path('/');
                console.log($scope.product)
                }, function(error) {
                  console.log(error)
                });
              });
            } else {
              Cropper.crop(file, data).then(Cropper.encode).then(function(dataUrl) {
                ($scope.preview || ($scope.preview = {})).dataUrl = dataUrl;
                  Products.create({ product: { item_name: $scope.product.item_name, price: $scope.product.price, item_image: dataUrl, filename: file.name }}, function(){
                  // $location.path('/');
                  }, function(error){
                    console.log(error)
                  });
              })
            }
          }

          $scope.onChange = function() {
            if ($scope.product.currentImage) {
              $scope.product.item_image = $scope.product.currentImage.item_image;
              $scope.product.filename = $scope.product.currentImage.filename;
            } else {
              $scope.product = {};
            }
          }
  });
角度模板文件

<div class="content-push">
  <input type="file" onchange="angular.element(this).scope().onFile(this.files[0])" ng-class="{'has-error' : productForm.item_image.$invalid}" ng-model="product.currentImage" ng-change="onChange" required>
    <br />
    <div ng-if="dataUrl" class="img-container">
      <img ng-if="dataUrl" ng-src="{{dataUrl}}" width="300" height="300"
          ng-cropper
          ng-cropper-proxy="cropperProxy"
          ng-cropper-show="showEvent"
          ng-cropper-hide="hideEvent"
          ng-cropper-options="options">
    </div>
    <br />
      <button ng-click="preview()" class="btn btn-success">Show preview</button>
      <button ng-click="zoomin()" class="btn btn-default">Zoom In</button>
      <button ng-click="zoomout()" class="btn btn-default">Zoom Out</button>
      <!-- <button ng-click="saveImage()" class="btn btn-default">Save</button> -->
      <input type="submit" value="{{ product.currentImage.item_image ? 'Update' : 'Save' }}", class="btn btn-default" ng-click="saveImage()">
      <div class="preview-container">
        <img ng-if="preview.dataUrl" ng-src="{{preview.dataUrl}}" width="100" height: "100">
      </div>
      <select name="sellCategory" class="form-control" id="sellCategory" ng-model="product.category" required>
        <option ng-repeat="option in categories.availableCategories" value="{{option.category}}">{{option.name}}</option>
      </select>
      <input type="text" ng-model="product.item_name" class="form-control" placeholder="Item Name" required>
      <input type="text" ng-model="product.price" class="form-control" placeholder="Item Price" required>
</div>

我把这个概念理解错了

假设我在中有多个文件上传功能,而不是配置angularjs通过PUT请求逐个上传文件,我会选择base64格式的每个文件进行预览,然后在angularjs中输入价格、类别和项目名称等字段,而不是发布每个数据

所以,在客户端的所有内容都设置了图像预览后,我希望有四个和数据,然后我会将其保存到后端


感谢所有看过我的问题的人。

裁剪器的定义在哪里?我在你的代码中没有看到它。但是更新不起作用。。。也许你能告诉我们到底发生了什么?你有错误吗?或者在if/else语句中,它总是沿着创建新对象的路径?@SunilD。没有错误,我对上面提琴中的示例感到困惑,并试图将其添加到我的控制器中。@eric它是ngCropper-