所以我有一个绑定到2个视图的控制器.在控制器中,我希望将范围变量设置为:
$scope.isOffset = false;
当另一个视图被路由时,我希望它设置为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"
});
这两个视图还具有绑定到范围的输入:
$scope.claimInfo = {
id: "",
benefitId: "",
isSecIns: "",
isNoResid: "",
expenseTypeId: "",
fromDate: "",
toDate: "",
provider: "",
who: "",
depId: "",
age: "",
amount: "",
comments: "",
isOffset: "",
};
因此,确保上面显示的第二条路线,这个’isOffset’是相同的.
我没有使用stateProvider,但不确定这适用于此,因为一个视图不是另一个视图的子集.
那么试图弄清楚我能在这做什么?在我看来,但我无法弄清楚如何,最好的路线是改变路由并为app.js添加某种变量或setter,以便我希望该变量设置为true.
解决方法:
当路由器更改视图时,它会破坏控制器并破坏其范围.然后,它创建一个新范围并实例化新控制器.即使新控制器与旧控制器相同,它也会这样做.
要根据路径设置变量,请在路径中添加resolve函数:
$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 } }
});
然后当您的控制器在新视图中启动时:
$scope.isOffset = $scope.$resolve.isOffset;