gpt4 book ai didi

AngularJS为路由内定义的 Controller 保留的$ params变量

转载 作者:行者123 更新时间:2023-12-04 05:00:01 27 4
gpt4 key购买 nike

是否可以在AngularJS中的定义的路由中传递您自己的变量?

我这样做的原因是因为我必须对同一页面进行数据表示(一个是根据JSON数据进行过滤的 View ),而我要做的就是为$ params数组提供一个 bool 标志以让 Controller 功能知道此页面已过滤或未过滤。

像这样的东西:

var Ctrl = function($scope, $params) {
if($params.filtered) {
//make sure that the ID is there and use a different URL for the JSON data
}
else {
//use the URL for JSON data that fetches all the data
}
};

Ctrl.$inject = ['$scope', '$routeParams'];

angular.modlule('App', []).config(['$routeProvider', function($routes) {

$routes.when('/full/page',{
templateURL : 'page.html',
controller : Ctrl
});

$routes.when('/full/page/with/:id',{
templateURL : 'page.html',
controller : Ctrl,
params : {
filtered : true
}
});

}]);

最佳答案

根据 $routeProvider documentationroute$routeProvider.when()参数具有resolve属性:

An optional map of dependencies which should be injected into the controller.



这样的事情应该起作用:
function Ctrl($scope, isFiltered) {
if(isFiltered) {
//make sure that the ID is there and use a different URL for the JSON data
}
else {
//use the URL for JSON data that fetches all the data
}
}
Ctrl.$inject = ['$scope', 'isFiltered'];

angular.modlule('App', []).config(['$routeProvider', function($routeProvider) {

$routeProvider.when('/full/page',{
templateURL: 'page.html',
controller: Ctrl
});

$routeProvider.when('/full/page/with/:id',{
templateURL: 'page.html',
controller: Ctrl,
resolve: {
isFiltered: function() { return true; }
}
});

}]);

关于AngularJS为路由内定义的 Controller 保留的$ params变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12059956/

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