我有一个stateProvider,它看起来像:
$stateProvider.state('test.example', {
url: '/test?param1¶m2',
templateUrl: 'test/testParam.html',
controller: 'testParamCtrl'
});
当我在控制器中控制log $ stateParams时,它会运行两次。只有当我在我的应用上的标签之间切换时才会发生这种情况。如果我刷新应用程序,则不会发生此问题。
似乎控制器是"建造" stateParams对象并每次实例化控制器。因此,我在第一次实例化过程中得到了一些未定义的param2角度误差。这是控制台日志的样子:
Object {param1: "data1", param2: undefined} // first instantiation
Object {param1: "data1", param2: "data2"} // second instantiation
然而,当我刷新页面时,只显示一个控制台日志,这是"正确的一个" (即param1和param2都是定义的)。
提前致谢!
答案 0 :(得分:1)
我的猜测是'test/testParam.html'
你有ng-controller="testParamCtrl"
。删除模板中的ng-controller
或删除状态定义中的controller属性。
答案 1 :(得分:0)
我认为您需要将州定义更改为:
$stateProvider.state('test.example', {
url: '/test/:param1/:param2',
templateUrl: 'test/testParam.html',
controller: 'testParamCtrl'
});
以正确的方式传递参数。
答案 2 :(得分:0)
您需要指定参数值
$stateProvider.state('test.example', {
url: '/test/:param1/:param2',
params: {
param1: "data1",
param2: "data2" }
templateUrl: 'test/testParam.html',
controller: 'testParamCtrl'});