Angularjs 数据仅在重新加载时加载?
我从工厂得到数据。请求后,我定义了一些属性Angularjs 数据仅在重新加载时加载?,angularjs,Angularjs,我从工厂得到数据。请求后,我定义了一些属性 http.get( 'app/propertyType/get.php').then(function (response) { if (response.data) { var data = response.data; dataFactory.propertyTypes = angular.e
http.get( 'app/propertyType/get.php').then(function (response)
{
if (response.data) {
var data = response.data;
dataFactory.propertyTypes = angular.extend({
asArray: data
}
});
}
});
getPropertyTypes: function () {
return this.propertyTypes;
}
这就是我进入控制器的原因
$scope.propertyTypes = DataFactory.getPropertyTypes();
$scope.$watch(function () {
return DataFactory.getPropertyTypes();
}, function (newValue) {
if (newValue) {
$scope.propertyTypes = newValue;
}
});
所以需要重新加载才能成功加载数据。如何解决这个问题?每当我更改路由时,它应该已经加载到页面中。要在任何情况下重新加载状态,可以使用
$state.reload()代码>如果您使用的是ui.router
模块,要在进入路由之前加载smth,您可以在状态定义中使用解析
块。
例:
此外,为了实现这一点,您应该从DataFactory.getPropertyTypes()
编辑:您还可以在ngRoute
路由定义中使用resolve
。您可以阅读有关如何执行此操作的详细信息。这就是问题所在。.我不想重新加载。.它应该在路由加载时加载数据。您可以在路由配置中使用resolve
-功能。Route resolve接受承诺,因此该页面仅在承诺解决后加载。我使用routeProvider。@waseemak,请参阅我的编辑。您还可以在routeProvider中使用resolve
块。如果要在控制器中进行更改以解决此问题,仍然存在(
configuration),则@waseemak,如果您希望在控制器实例化时获得数据,则否,否则,您可以在控制器中处理promise
,并执行如下操作:DataFactory.getPropertyTypes()。然后(函数(数据){$scope.propertyTypes=data})
这样您就不需要查看
,但您应该记住,$scope.propertyTypes
将在将来填充,而不是在其他代码段中依赖它。
$stateProvider.state('state1', {
controller:'controller',
templateUrl:'url',
resolve: function(DataFactory){
DataFactory.getPropertyTypes();
}
})