我从工厂获取数据。在请求后我定义了一些属性。
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;
}
});
所以它需要重新加载才能成功加载数据..如何解决这个问题?每当我更改路线时,它应该已经加载到页面中。
答案 0 :(得分:0)
要在任何条件下重新加载状态,您可以使用$state.reload();
答案 1 :(得分:0)
如果您正在使用ui.router
模块,要在输入路径之前加载smth,您可以在状态定义中使用resolve
块。
例如:
$stateProvider.state('state1', {
controller:'controller',
templateUrl:'url',
resolve: function(DataFactory){
DataFactory.getPropertyTypes();
}
})
同样为了完成这项工作,您应该从promise
DataFactory.getPropertyTypes()
个对象
编辑:您还可以在resolve
路由定义中使用ngRoute
。 Here您可以阅读有关如何执行此操作的详细信息。