Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置路线时角度范围变量是否更改?_Javascript_Angularjs_Routes - Fatal编程技术网

Javascript 设置路线时角度范围变量是否更改?

Javascript 设置路线时角度范围变量是否更改?,javascript,angularjs,routes,Javascript,Angularjs,Routes,所以我有一个绑定到2个视图的控制器。在控制器中,我希望将范围变量设置为: $scope.isOffset = false; 当路由另一个视图时,我希望将其设置为true。My app.js中的我的路线设置如下: $routeProvider.when("/claimSub", { controller: "claimsController", templateUrl: "ppt/views/claims/claimSub.html" }); $routeProvider.wh

所以我有一个绑定到2个视图的控制器。在控制器中,我希望将范围变量设置为:

$scope.isOffset = false;
当路由另一个视图时,我希望将其设置为true。My 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: "",
};
因此,请确保上面显示的第二条路线,即“Isofset”是相同的

我没有使用stateProvider,但不确定这是否适用于这里,因为一个视图不是另一个视图的子集

想知道我在这里能做什么吗?在我看来,但是我不知道怎么做,最好的方法是改变路由,并为app.js添加某种变量或setter,以便查看我希望该变量设置为true的视图

将“claimsController”控制器实例化两次,一次用于
claimSub
视图,另一次用于
offsetSwipe
视图

如果需要在两个视图(路由)之间共享数据,可以使用,或者如果要共享范围,则必须添加一个父控制器(例如,将“mainController”添加到封装所有视图的元素中)


例如,使用附加到
ng controller=“mainController”
,在此控制器中设置需要在两个视图之间共享的变量。如果您需要知道状态(视图)何时更改,请使用
$rootScope.$on(“$routeChangeSuccess”,…)

您可以尝试使用
$location.path()
获取当前页面,然后您可以相应地设置
$scope.isOffset=currentPage=='claimSub'

当路由器更改视图时,它将破坏控制器及其范围。然后,它创建一个新的作用域,并实例化新的控制器。即使新控制器与旧控制器相同,它也会执行此操作

要基于路由设置变量,请在路由中放置解析函数:

$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;

Thank@DaanvanHulst可能与Thank@DaanvanHulst重复-但这有点不同,因为其目的是为不同的视图使用一个控制器。我也有不同的服务。这个控制器实际上拉一些服务来处理不同的DOM操作和页面视图。但是你遇到的问题和上面链接的问题是一样的,对吗?它有两个使用同一控制器的视图。您想确保每个视图都使用相同的“IsofSet”变量吗?还是我误解了这个问题?谢谢。claimsController包装这两个视图。这是两个视图,一个控制器,因为两个视图都需要claimsController中的许多函数。我可以使用服务,但不确定如何根据用户是否在一个视图中将作用域变量从false更改为true。不,它是如何定义的您有两个独立的“claimsController”实例;如果您只需要一个实例,可以将其附加到“父”HTML元素(即body)并从$routeProvider中删除。不确定我是否在跟踪。您能否显示您所指的内容?例如,使用
ng controller=“mainController”
附加到
,并在此控制器中设置您需要在两个视图之间共享的变量。如果您需要知道状态(视图)何时更改,请使用
$rootScope.$on(“$routeChangeSuccess”,…)