在以下Angular控制器中,$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.building
再次使用新创建的{{1}获取}}
在AngularJS中实现此目的的常用方法是什么?
答案 0 :(得分:1)
您可以将数据提取到函数中,然后在需要更新数据时再次调用它,例如在$scope.addPanodata()