在下面的 Angular Controller 中,$q.all
获取保存在 $scope.building
中的 JSON 树。然后使用 $scope.building
创建 pano
和 panodata
:
JS:
angular.module('yoApp')
.controller('addPanoCtrl', function($q, $scope, $rootScope, $routeParams, serviceUpload) {
$scope.buildingId = $routeParams.buildingId
$q.all([
serviceUpload.getAllBuilding()
]).then(function(value) {
var buildingJSON = _.where(JSON.parse(value), {'objectId': $scope.buildingId})
$scope.building = buildingJSON[0]
}, function(reason) {
$scope.result = reason
})
// Methods
$scope.addPano = function() {
// SOME CODE
pano.save(json, {
success: function(object) {
$scope.building.pano.push(json)
$scope.panoName = ''
$scope.$digest()
},
error: function(object, error) {
}
})
}
$scope.addPanodata = function(panoId) {
// SOME CODE
panodata.save(json, {
success: function(object) {
$scope.pano.panoData.push(json)
$scope.panodataName = ''
$scope.$digest()
},
error: function(object, error) {
}
})
}
})
HTML:
<div class="col-md-3" ng-repeat="pano in building.pano">
<!-- SOME CODE -->
<a class="btn btn-primary" href="javascript:;" ng-click="addPanodata(pano.objectId)">Add</a>
保存 pano
没有问题,因为我有 $scope.buildingId
。当我保存 panodata
时,问题就出现了。如果我创建一个 pano
然后创建一个 panodata
我不能,因为 $scope.building
没有新的 pano
.
如果我重新加载页面,panodata
就会被保存,但我在想是否可以只重新加载 $q.all
位,所以 $scope。使用新创建的
get。pano
再次获取building
在 AngularJS 中完成此任务的常用方法是什么?
最佳答案
您可以将获取数据提取到一个函数中,然后在需要更新数据时再次调用它,例如在 $scope.addPanodata()
关于javascript - 如何重新运行/重新加载 Controller 的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34716917/