如何检查$ routeParams数据是否存在

时间:2014-04-23 14:57:24

标签: angularjs firebase angularfire

我正在尝试使用angularfire中的routeParams来查看是否有基于firebase位置存在的数据重定向或执行任何操作的方法。如果我有一个用户配置文件$ routeParam setup,并且user1,(users / user1)存在用户对象,我想显示该配置文件。但是,如果user20不存在用户对象,而不是显示带有空白数据的模板页面,我想重定向到另一个页面。我不知道在哪里拨打这个电话。 这是我的配置文件控制器设置

app.controller('ProfileCtrl',
function ($scope, $routeParams, User) {
    $scope.user = User.findUsername($routeParams.username);

和我的用户服务,用于检查用户是否存在

 findUsername: function (username) {
        if (username) {
            return users.$child(username);
        }    

2 个答案:

答案 0 :(得分:1)

怎么样:

app.controller('ProfileCtrl',
    function ($scope, $routeParams, User,$location) {
      if(!$routeParams.username){
         $location.path('/somewhereElse');
      }

    $scope.user = User.findUsername($routeParams.username);

如果您的意思是要检查用户名是否有效,那么唯一的方法是通过一些检查,最好是服务器端$http。我建议提供服务来检查服务器是否有用的用户名。

答案 1 :(得分:0)

如果参数是可选的且不存在,那么$ routeParams将是未定义的,上述将失败。为了避免这种情况,只需检查$ routeParams以及

if($routeParams && routeParams.username) {
    $scope.user = User.findUsername($routeParams.username);
}