【发布时间】:2016-11-30 01:10:20
【问题描述】:
我想根据输入的合同编号更新一组字段,用户可以选择要更改的字段,并可以设置值。我的代码没有改变记录,我不知道为什么。我猜可能是没有定义道具。该应用程序是使用AngularFire的api构建的,我的代码如下:
<div class="container-fluid">
<div class="row">
<h3>Contract renewal & Group update other fields</h3>
<form class="form-horizontal" ng-submit="groupUpdate()" name="contractupdateForm">
<div class="form-group">
<label for="washroom" class="col-sm-2 control-label"> Contract Number</label>
<div class="col-sm-8">
<div class="input-group">
<input type="text" class="form-control" placeholder="Enter contract number so related fileds could be group updated" ng-model="contractupdate" ng-required="true">
</div>
</div>
</div>
<div class="form-group">
<label for="washroom" class="col-sm-2 control-label"> Fields Category</label>
<div class="col-sm-8">
<div class="input-group">
<select class="form-control" id="productfield" name = "productfield" ng-model="fieldupdate" ng-options="f.value as f.label for f in fields">
<option value="">No filed selected</option>
</select>
</div>
</div>
</div>
<div class="form-group">
<label for="washroom" class="col-sm-2 control-label"> Updated value</label>
<div class="col-sm-8">
<div class="input-group">
<input type="text" class="form-control" placeholder="Enter value supposed to be changed" ng-model="valueupdate" ng-required="true">
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2">
<button type="submit" class="btn btn-default" >
Change group value
</button>
</div>
</div>
</form>
<hr>
</div>
</div>
控制器部分如下:
$scope.groupUpdate = function(){
console.log($scope.contractupdate);
console.log($scope.fieldupdate);
console.log($scope.valueupdate);
for(var i = 0; i< productsInfo.length;i++){
if(productsInfo[i].productcontract == $scope.contractupdate){
var prop = $scope.fieldupdate;
productsInfo[i].prop = $scope.valueupdate;
productsInfo.$save(i).then(function(ref) {
console.log("group update success");
}, function(error) {
console.log("Error:", error);
});
}
/*if(i.productcontract == $scope.contractupdate){
var field = $scope.fieldupdate;
console.log(productsInfo[i].field);
productsList[i].field == $scope.valueupdate;
productsList.$save().then(function(productRef){
console.log("group updated success");
ref.key === obj.$id; // true
}, function(error) {
console.log("Error:", error);
});
}*/
};
};
【问题讨论】:
-
您检查 JavaScript 控制台是否有任何错误消息?
-
是的,我输出 productsInfo[i].prop 到控制台,是期望值,但是记录没有改变,可能是我没有使用保存功能吧?
-
奇怪的是控制台输出“组更新成功”,如果$save函数不起作用,那么它不会返回promise,但是如果起作用了,怎么一直没有结果变了吗?
标签: angularjs firebase firebase-realtime-database angularfire