Javascript AngularJS使用post重复刷新
首先,我对AngularJS和stackoverflow还不熟悉,所以我的思想非常开放。我的问题是,我有一个表,其中有3项使用ng blur指令调用save函数 用户界面 我希望每次使用插入的新对象(即现有对象的修改副本)调用save时,都能够刷新measureList,此时正在数据库中创建同一对象的多个副本,并且我只能在重新加载页面或更改ratingYear中的值时才能看到它Javascript AngularJS使用post重复刷新,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,首先,我对AngularJS和stackoverflow还不熟悉,所以我的思想非常开放。我的问题是,我有一个表,其中有3项使用ng blur指令调用save函数 用户界面 我希望每次使用插入的新对象(即现有对象的修改副本)调用save时,都能够刷新measureList,此时正在数据库中创建同一对象的多个副本,并且我只能在重新加载页面或更改ratingYear中的值时才能看到它 首先,我建议您使用服务或工厂在控制器和实际原始数据之间建立一个良好的抽象层。这将使您的api调用(如获取度量列表)可重
首先,我建议您使用服务或工厂在控制器和实际原始数据之间建立一个良好的抽象层。这将使您的api调用(如获取度量列表)可重用和可维护。我将查看这两种调用,谢谢
<div ng-controller="measureController">
<div class="jumbotron">
<h3>RatingYear</h3>
<select ng-model="ratingYear" ng-change="getMeasures()">
<option ng-repeat="year in years" value="{{year}}">{{year}}</option>
</select>
</div>
<!-- this is going to be the container for each measure-->
<div class="panel panel-default">
<!-- Default panel contents -->
<div class="panel-heading">Measures for {{ratingYear}}</div>
<table class="table table-bordered table-hover">
<tbody>
<tr>
<th>Code</th>
<th>Name</th>
<th>Action</th>
<th>Active</th>
<th>Order</th>
</tr>
<tr ng-repeat="measure in measureList track by measure.MeasureId">
<td class="col-md-1">{{measure.Code}}</td>
<td class="col-md-5">{{measure.Name}}</td>
<td class="col-md-4"><textarea ng-model="measure.Action" ng-disabled="!measure.Active" ng-blur="save(measure)"></textarea></td>
<td class="col-md-1"><input type="checkbox" ng-checked="measure.Active" ng-model="measure.Active" ng-change="save(measure)" /></td>
<td class="col-md-1"><input class="form-control" ng-model="measure.Order" ng-disabled="!measure.Active" ng-blur="save(measure)" /> </td>
</tr>
</tbody>
</table>
</div>
</div>
function measureController($scope, $http) {
$scope.years = [2014,2015, 2016 ];
//get Measures Per Year
$scope.getMeasures = function () {
$http.get('/api/measure/' + $scope.ratingYear)
.success(function (data, status, headers, config) {
$scope.measureList = data;
$scope.$apply();
//$scope.loading = false;
})
.error(function () {
$scope.error = "An Error has occured while loading measures!";
$scope.loading = false;
});
};
//Edit Measure
$scope.save = function () {
$scope.loading = true;
var uMeasure = this.measure;
var active = uMeasure.Active ? 1 : 0;
$http.post('/api/measure/' + uMeasure.MeasureId + '/status/' + active, uMeasure)
.success(function (data, status, headers, config) {
$scope.measureList.push(data);
$scope.$digest();
})
.error(function (data,status, headers, config) {
alert("You failed misserably"+data);
});
};
}