数据无法呈现

时间:2014-10-08 14:37:21

标签: javascript angularjs

我有一个网站,可以在可过滤的列表中显示数据。当应用过滤器时,我希望它作为参数附加到URL。我为此写了一个服务:

app.factory('urlFilter', ['$location', function ($location) {
    var urlParams = $location.search();
    return function ($scope, myUrlParams) {
        angular.forEach(myUrlParams, function (param) {
            $scope[param] = isset(urlParams[param]) ? urlParams[param] : 0;

            $scope.$watch(param, function (value) {
                if (isset(value)) {
                    $location.search(param, value);
                }
            });
        });
    };
}]);

urlFilter是控制器中调用的最后一件事:

urlFilter($scope, ['company_id']);

在控制器中,我获取资源并设置company_id。使用下拉列表更新company_id。每当company_id更新时,我都会重新获取资源:

$scope.$watch('company_id', function (companyId) {
    if (!isset(companyId)) {
        return;
    }

    Api.resource.query({company_id: companyId}, function (data) {
        $scope.resources = data;
    });
});

此方法在我的localhost环境中完美运行。但每当我将它上传到生产时它都有用。如果我更改了公司,则会重新获取资源并正确设置URL参数。如果我刷新页面中包含URL参数,我会看到使用Chromes调试工具重新获取资源,并使用正确的company_id并且响应正常。但是视图没有更新,即空资源列表和初始没有公司在公司下拉设置。

我做错了什么?有更好的方法吗?我没有使用角度路由。

注意:isset()是我自己写的一个函数。

1 个答案:

答案 0 :(得分:0)

通过在使用从parseInt()收集的值时添加$location来修复,即:

$scope[param] = isset(urlParams[param]) ? parseInt(urlParams[param]) : 0;