我正在使用Yeoman Angular-fullstack构建一个Web应用程序。我对如何更新我的$ scope变量感到困惑,这样一旦做出更改,结果就会自动显示在html页面上,而不会刷新。
HTML
<h1 class="page-header">Drugs:</h1>
<div class="row">
<div class="col-sm-4 col-sm-offset-4">
<div ng-repeat="current in alldrugs">
<p>
<a href="/edit={{current._id}}"> <button class="btn btn-default" type="button">{{current.name}}</button></a>
<a ng-click="delete(current)"><button class="btn btn-default" type="button">delete</button></a>
</p>
</div>
</div>
</div>
Controller.js
'use strict';
angular.module('firstApp')
.controller('MainCtrl', function ($scope, $http) {
$scope.alldrugs = [];
$http.get('/api/drugs').success(function(alldrugs) {
$scope.alldrugs = alldrugs;
});
$scope.delete = function(thing) {
$http.delete('/api/drugs/' + thing._id);
$http.get('/api/drugs').success(function(alldrugs) {
$scope.alldrugs = alldrugs;
});
};
});
当调用$ scope.delete时,该项目将被删除,但在刷新页面之前,页面不会反映更改。我认为它与http回调函数的范围有关。任何帮助将不胜感激,谢谢。
答案 0 :(得分:1)
问题是$ http.delete和$ http.get是异步调用的。
当调用$ http.get时,$ http.delete还没有完成。您必须确保在删除后调用get。
此代码可以使用,但它不是一个优雅的解决方案:
$scope.delete = function(thing) {
$http.delete('/api/drugs/' + thing._id).success(function(){
//The get will be called AFTER the delete
$http.get('/api/drugs').success(function(alldrugs) {
$scope.alldrugs = alldrugs;
});
});
};
答案 1 :(得分:0)
您只需使用一个请求即可解决问题:
function myFunction() {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var s=ss.getSheetByName('odpovědi')
var lr=s.getLastRow()
var ax=s.getRange(lr, 10).getValue();
if(ax == ""){
ax = "foo";
s.getRange(lr, 10).setValue(ax);
}
}