gpt4 book ai didi

javascript - 路由更改后监视范围为空

转载 作者:行者123 更新时间:2023-11-30 00:15:05 27 4
gpt4 key购买 nike

我有一个 Controller ,用于收集数据的 3 个不同 View 。我正在看其中的 2 个示波器。这是一个摘录:

  // predefine place before Google Maps API GET
$scope.place = {
formatted_address: '',
url: ''
};

// watch place in case of change (doesn't work otherwise)
$scope.$watch('place', function () {
$scope.poll.Poll.Location = $scope.place.formatted_address;
$scope.poll.Poll.UrlLocation = $scope.place.url;
});

在 View 1 上一切正常,$scope.poll.Poll.Location$scope.poll.Poll.Location 填充了 Google 的数据 map API。

但是当我点击一个按钮来改变我的路线 (ui-sref="view2") 时,它使用相同的 Controller ,范围是空的。

如何使用同一 Controller 在多个 View 之间传输监视范围?

最佳答案

如果您有多个状态使用同一个 Controller ,那么两个状态都会获得它自己的 Controller 实例。您必须将数据作为参数传递给第二个状态。

像这样:ui-sref="view2({poll: poll})"

不要忘记将参数添加到 $stateProvider 中的状态定义。

$stateProvider.state("homepageState", {
url: "/home/",
templateUrl: "templates/homePage.html",
controller: "HomePageController",
params: {
poll: null //initial
}
});

在您的 Controller 中,您可以通过调用 $stateParams.poll 获取值

您还可以使用 Angular services .服务仅实例化一次并且可重用。

如果你必须等待来自未知来源的数据,那么你必须看看Promise.when()

when(value, [successCallback], [errorCallback], [progressCallback]);

Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise. This is useful when you are dealing with an object that might or might not be a promise, or if the promise comes from a source that can't be trusted.

关于javascript - 路由更改后监视范围为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35045778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com