javascript - 為什麼我無法透過$stateParams在父子State之間傳遞參數?跟State之間的父子關係有關嗎?
淡淡烟草味
淡淡烟草味 2017-05-27 17:44:33
0
2
951
  1. 路由設定(兩個State之間有父子關係):

.state("tab.my-profile", {
  url: "/my/profile",
  views: {
    "tab-my": {
      templateUrl: "templates/tab-my-profile.html",
      controller: "MyProfileCtrl"
    }
  }
})
  .state("tab.my-profile-mobileinput", {
    url: "/my/profile/mobileinput",
    views: {
      "tab-my": {
        params: {"mobile": null}
        templateUrl: "templates/util-mobile-input.html",
        controller: "MobileInputCtrl",
      }
    }
  })

2.父State的控制器中的程式碼:

.controller("MyProfileCtrl", function ($scope, $state) {
  $scope.goToMobileInput = function () {
    $state.go("tab.my-profile-mobileinput", {"mobile": "123456"})
  };
})

3.子State的控制器中的程式碼:

.controller("MobileInputCtrl", function ($scope, $stateParams) {
  alert($stateParams.mobile);  // undefined
})

能夠跳到子State,但在子State的控制器中無法接收到參數(存取參數時得到的結果是undefined,而不是"123456")。看了網路資料這麼寫應該無誤,是跟State之間的父子關係有關嗎?

淡淡烟草味
淡淡烟草味

全部回覆(2)
黄舟

你的router定義的有問題,params需要和url, views在同一級,views正如字面意思那樣,是指定ui的,你在其中指定了params就有問題了,需要改成如下這樣:

  .state("tab.my-profile-mobileinput", {
    url: "/my/profile/mobileinput",
    params: {"mobile": null},
    views: {
      "tab-my": {
        templateUrl: "templates/util-mobile-input.html",
        controller: "MobileInputCtrl"
      }
    }
  })
左手右手慢动作

$broadcast,我記得這種應該採用事件廣播,可以將事件從父級作用域傳播至子級作用域,你可以百度一下相關內容,應該能夠解決

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板