数据仅在重新加载时加载?

时间:2017-07-05 07:49:32

标签: angularjs

我从工厂获取数据。在请求后我定义了一些属性。

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

所以它需要重新加载才能成功加载数据..如何解决这个问题?每当我更改路线时,它应该已经加载到页面中。

2 个答案:

答案 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路由定义中使用ngRouteHere您可以阅读有关如何执行此操作的详细信息。