2016-06-07 45 views
0

我看起来像一个stateProvider:

$stateProvider.state('test.example', { 
     url: '/test?param1&param2', 
     templateUrl: 'test/testParam.html', 
     controller: 'testParamCtrl' 
}); 

当我控制台登录$ stateParams在我的控制器,它运行两次。只有当我在我的应用程序的标签之间切换时才会发生这种情况如果我刷新应用程序不会发生此问题。

看起来好像控制器每次“构建”stateParams对象并实例化控制器。因此,我得到了第一个实例化过程中未定义param2的一些角度错误。这是控制台日志样子:

Object {param1: "data1", param2: undefined} // first instantiation 
Object {param1: "data1", param2: "data2"} // second instantiation 

当我刷新页面,但是,只有一个控制台的日志显示出来,这是“正确的”(即参数1和两个被定义参数2)。

在此先感谢!

+0

创建plunker一个[MCVE]试玩会复制这个 – charlietfl

回答

1

我的猜测是,在'test/testParam.html'你有ng-controller="testParamCtrl"。删除模板中的ng-controller或删除状态定义中的控制器属性。

0

我想你需要你的状态认定中更改为:

$stateProvider.state('test.example', { 
     url: '/test/:param1/:param2', 
     templateUrl: 'test/testParam.html', 
     controller: 'testParamCtrl' 
}); 

通过正确的方式参数。

0

你需要指定参数值

$stateProvider.state('test.example', { 
    url: '/test/:param1/:param2', 
    params: { 
    param1: "data1", 
    param2: "data2" } 
    templateUrl: 'test/testParam.html', 
    controller: 'testParamCtrl'});