如果数据是新的就添加,如果数据是不同的就更新
Add if data is new Or Update when data is different angularjs
我试图更新数据,而不是添加(创建)一个新的数据时,图像被改变(图像是在base64)
我也跟着:http://jsfiddle.net/4Zeuk/12/就像我下面想做的,但我已经尽力了,但它更新不起作用。没有错误。
只是为了你的信息,我使用的是ngCropper。https://github.com/koorgoo/ngCropper
EDIT:更新控制器代码
角代码
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 = {};
}
}
});
Angular模板文件
<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客户端输入字段(如价格,类别和项目名称),而不是张贴PUT每个数据。
因此,在客户端设置了图像预览(我打算有四个)和数据之后,我会将其保存(POST)到后端。
感谢大家看我的问题。
相关文章:
- 如果数据为空,Ajax加载不会停止
- 如果数据的格式略有损坏,是否仍然可以确定其文件类型
- 如果数据为空,则显示HTML
- 如果数据不存在,则在表上追加jQuery
- 如果数据存在Javascript,则剩余字符
- 如果数据绑定对象只有它的名称,那么敲除如何知道它
- 合并可观察量 A 和 B:仅当 A 有数据时才应触发;如果数据或默认值,则从 B 获取
- 如果数据是html,如何使用Angular http返回错误
- 图表.js折线图,如果数据相同,如何隐藏y轴开始和结束标签
- 如果数据形式为 while(),如何使用 javascript 求和
- 如果数据随$watch而更改,Angujar 1.3 则无法
- 如果数据已经存在,请检查MySQL,如果不存在,请插入.[PHP+jQuery-Ajax]
- 如果数据可用,Angularjs单击行
- 如果数据不是't已验证
- 如果数据太大,则未定义$_POST['data']
- 如果数据发布,如何在javascript中向下滑动
- jQuery/Javascript如果数据计数大于
- 如果数据是新的就添加,如果数据是不同的就更新
- 如果数据包含URL, Javascript将无法解析JSON
- 如果数据作为参数通过函数传递,Jqplot不会出现