如果直接访问视图,则未定义 $stateParams 变量?

$stateParams variable not defined if the view is accessed directly?

我有两个视图 VIEW1 和 VIEW2。如果直接访问,通常 VIEW1 不需要 $stateParams 变量来运行。但是,如果从 VIEW2 访问,我需要将 $stateParams 变量从 VIEW2 传递给 VIEW1。

app.controller('View1Ctrl', function($scope, $stateParams, $state) {

   $scope.varView1 = $stateParams.view2Data.varView2;

)}

.state('app.view1', {
  url: '/view1',
  params: {view2Data: null },
  views: {
    'menuContent': {
      templateUrl: 'templates/view1.html',
      controller: 'View1Ctrl'

    }
  }
})

app.controller('View2Ctrl', function($scope, $stateParams, $state) {

  $state.go('app.view1', {view2Data: {varView2: 'varView2 Value' } });

)}

问题是: 如果 $stateParams 变量在 VIEW1 控制器中编码,这将在直接访问 VIEW1 的情况下产生 $stateParams 变量未定义问题。

我在想 VIEW1 控制器中的一些东西,比如 if SET ($scope.varView1 = $stateParams.view2Data.varView2;){ continue }

有什么解决办法吗?

状态配置 params 对象允许您设置默认值,因此您可能应该使用类似

的东西
params: {
    view2Data: {
        varView2: null
    }
}

至少到那时,$stateParams.view2Data.varView2.

不会出现 "undefined is not an object" 错误