gpt4 book ai didi

javascript - 设置路由时 Angular 范围变量会发生变化吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:43:26 26 4
gpt4 key购买 nike

所以我有一个绑定(bind)到 2 个 View 的 Controller 。在 Controller 中,我希望将范围变量设置为:

$scope.isOffset = false;

当路由另一个 View 时,我希望它设置为 true。我的 app.js 中的路线设置如下:

$routeProvider.when("/claimSub", {
controller: "claimsController",
templateUrl: "ppt/views/claims/claimSub.html"
});

$routeProvider.when("/offsetSwipe", {
controller: "claimsController",
templateUrl: "ppt/views/swipes/offsetSwipe.html"
});

这两个 View 也有绑定(bind)到范围的输入:

$scope.claimInfo = {
id: "",
benefitId: "",
isSecIns: "",
isNoResid: "",
expenseTypeId: "",
fromDate: "",
toDate: "",
provider: "",
who: "",
depId: "",
age: "",
amount: "",
comments: "",
isOffset: "",
};

所以要确保上面显示的第二条路线,这个'isOffset'是一样的。

我没有使用过 stateProvider,但不确定这是否适用于此,因为一个 View 不是另一个 View 的子集。

想知道我能在这里做什么?在我看来,但我无法弄清楚如何,最好的方法是更改​​路由并向 app.js 添加某种变量或 setter ,以便我希望将该变量设置为 true 的 View 。

最佳答案

当路由器更改 View 时,它会销毁 Controller 及其销毁 其作用域。然后它创建一个新范围并实例化新 Controller 。即使新 Controller 与旧 Controller 相同,它也会这样做。

要根据路由设置变量,请在路由中放置一个解析函数:

$routeProvider.when("/claimSub", {
controller: "claimsController",
templateUrl: "ppt/views/claims/claimSub.html",
resolve: { isOffset: function() { return false } }
});

$routeProvider.when("/offsetSwipe", {
controller: "claimsController",
templateUrl: "ppt/views/swipes/offsetSwipe.html",
resolve: { isOffset: function() { return true } }
});

然后当您的 Controller 在新 View 中启动时:

$scope.isOffset = $scope.$resolve.isOffset;

关于javascript - 设置路由时 Angular 范围变量会发生变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35008735/

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