ui路由器在我改变状态时没有设置值

时间:2015-01-16 14:50:43

标签: angularjs angular-ui-router

所以我认为这很容易但是我显然做错了,无论我做什么我都能得到" personId"当我改变状态时,在控制器中的变量。我可以在URL中看到它,所以你认为它可以,但它总是未定义的。希望有人可以看到错误 - 这是州的配置

$stateProvider.state('quickScreen', {
    params: {
        hideAjaxContainer: "true",
        personId: {}
    },
    //url: "/Components/QuickScreen/{personId}",
    url: "/Components/QuickScreen/:personId",
    views: {
        angularContentContainer: {
            templateUrl: "/Components/QuickScreen/index.html",
            controller: "quickScreenController",
            resolve: {
                name: function ($stateParams) {
                    return $stateParams.personId;
                }
            }
        }
    }
});

这是控制器

var quickScreenController = function ($scope, $stateParams) {
console.log("quickScreenController loaded: " + $stateParams.personId);

};

可能是因为我的网址最终看起来像这样" http://localhost:1790/Search2#/Components/QuickScreen/5a114c4f-44c2-477a-97e5-a19500995016"它不起作用,但我不知道。谢谢......

1 个答案:

答案 0 :(得分:0)

我的语法没有看到任何不良内容。更重要的是,我创建了working plunker here,这是正常工作

  $stateProvider.state('quickScreen', {
    params: {
      hideAjaxContainer: "true",
      personId: {}
    },
    //url: "/Components/QuickScreen/{personId}",
    url: "/Components/QuickScreen/:personId",
    views: {
      angularContentContainer: {
        templateUrl: 'tpl.html',
        //templateUrl: "/Components/QuickScreen/index.html",
        controller: "quickScreenController",
        resolve: {
          name: function($stateParams) {
            return $stateParams.personId;
          }
        }
      }
    }
  });

检查here如果这仍然无济于事,请更新该plunker以重现该问题...准备协助......