Warum kann ich über $stateParams keine Parameter zwischen übergeordnetem und untergeordnetem Status übergeben? Hängt es mit der Vater-Sohn-Beziehung zwischen Staat und Staat zusammen?
淡淡烟草味
淡淡烟草味 2017-05-27 17:44:33
0
2
933
  1. Routing-Einstellungen (es besteht eine Eltern-Kind-Beziehung zwischen den beiden Staaten):

.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. Code im Controller des Mutterstaates:

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

3. Code im Controller des untergeordneten Staates:

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

Kann zum Unterstatus springen, aber keine Parameter im Controller des Unterstatus empfangen (das beim Zugriff auf die Parameter erhaltene Ergebnis ist undefiniert, nicht „123456“). Nach der Lektüre der Informationen im Internet sollte dieses Schreiben korrekt sein. Hängt es mit der Vater-Sohn-Beziehung zwischen Staat zusammen?

淡淡烟草味
淡淡烟草味

Antworte allen(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,我记得这种应该采用事件广播,可以将事件从父级作用域传播至子级作用域,你可以百度一下相关内容,应该能够解决

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage