更新时,我想插入来自ui的新值,而不是本地集合中存在的旧值。下面的代码在本地集合中插入旧值(我不希望这种情况发生)。
dataService.getSupplierById($routeParams.id)
.then(function (supplier) {
$scope.supplier = supplier; //now this contains local collection
$scope.save = function () {
$scope.updatedSupplier = $scope.supplier; //I want the scope to be updated and take values from the ui
dataService.updateSupplier($routeParams.id, $scope.updatedSupplier)
.then(function () {
//success
},
function () {
//error
});
};
},
function () {
//error
});
这是我的Html。
<div>
<label for="City">City</label>
<input name="City" type="text" data-ng-model="updateSupplier.city" value="{{supplier.city}}" />
</div>
我该怎么做?如何更新范围以获取新值?我是棱角分明的新人。
答案 0 :(得分:0)
如果您绑定updateSupplier
作为ng-model
,那么您在保存时不应覆盖这些值:
$scope.save = function () {
// remove the line that overwrites, was here
dataService.updateSupplier($routeParams.id, $scope.updatedSupplier)
.then(function () {
//success
},
function () {
//error
});
};
}
Angular将负责对ng-model
内的值进行双向绑定,因此在保存时它将具有在文本框中输入的正确值。
您还可以通过没有2个不同的范围属性来清理代码:
dataService.getSupplierById($routeParams.id)
.then(function (supplier) {
$scope.supplier = supplier; //now this contains local collection
$scope.save = function () {
dataService.updateSupplier($routeParams.id, $scope.supplier )
.then(function () {
//success
},
function () {
//error
});
};
},
function () {
//error
});
然后在html:
<div>
<label for="City">City</label>
<input name="City" type="text" data-ng-model="supplier.city" />
</div>
初始值应自动绑定到value
属性。