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();
    }
})