关于AngularJS转到状态而不重新加载并且没有值的参数和angularjs页面加载后再执行的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angularui-router:当路径参数更
关于AngularJS转到状态而不重新加载并且没有值的参数和angularjs页面加载后再执行的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于angular ui-router:当路径参数更改时如何重新加载状态,但在查询参数更改时如何不重新加载状态?、Angular2 Router 2.0.0是否在相同的URL加载了不同的参数时不重新加载组件?、AngularJS UI路由器 – 更改url没有重新加载状态、AngularJS UI路由器$state仅重新加载子状态等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- AngularJS转到状态而不重新加载并且没有值的参数(angularjs页面加载后再执行)
- angular ui-router:当路径参数更改时如何重新加载状态,但在查询参数更改时如何不重新加载状态?
- Angular2 Router 2.0.0是否在相同的URL加载了不同的参数时不重新加载组件?
- AngularJS UI路由器 – 更改url没有重新加载状态
- AngularJS UI路由器$state仅重新加载子状态
AngularJS转到状态而不重新加载并且没有值的参数(angularjs页面加载后再执行)
代码看起来有点像这样:
function refresh(stateName) { var hideSplash = $location.search().nosplash; if (hideSplash === true) { model.hide = true; } else { var templateUrl = getTemplateUrl(stateName); if (templateUrl && viewed.indexOf(templateUrl) === -1) { viewed.push(templateUrl); model.templateUrl = templateUrl; model.hide = false; model.finished = false; } } };
这就像一个魅力.正如你所知,在这种情况下,如果nosplash有一个值并不重要,它只需要预设.
就我而言,路径如下所示:
/摄像头/结果?NOSPLASH
在那条特定的路线上,我把它定义为:
angular.module('widget.wizard') .config(pickRoutes); function pickRoutes($stateProvider) { $stateProvider .state('home.category.results',configurePickRoute()); function configurePickRoute() { return { url: '/results?expanded',reloadOnSearch: false,views: { '': { templateUrl: 'scripts/results/results.html',controller: 'ResultsController',controllerAs: 'controller' } },resolve: { bypass: bypassRegistration },data: { pageTitle: 'Your PiiiCKs' } }; }; ////////////////////////////////////////////////// /* @ngInject */ function bypassRegistration($location,pkRegisterService) { if (!pkRegisterService.options.bypass) // Checks to see if has been set elsewhere pkRegisterService.options.bypass = $location.search().bypass; }; };
如您所见,我希望它扩展一个查询参数.目前,我的控制器有:
self.expanded = $stateParams.expanded; ////////////////////////////////////////////////// function expand() { self.expanded = true; $state.go('home.category.results',{ expanded: true }); };
在我看来,我有这个HTML:
<divng-if="controller.picks"> <div> <div> <div> <buttonng-click="controller.expand()" ng-if="!controller.expanded">See your other matches</button> </div> </div> </div> </div> <divng-if="controller.expanded"> <div> <div> <div> <h2>Your other matches</h2> </div> </div> </div> <divpk-product="product" pk-category="controller.category" ng-repeat="product in controller.notPicked"></div> </div>
如您所见,如果展开的属性为true,则隐藏按钮并显示“其他匹配”.
这确实有效,但网址看起来像这样:
/cameras/results?expanded=true
我希望它看起来像这样:
/cameras/results?expanded
有没有办法可以做到这一点,但仍然有reloadOnSearch:false?
解决方法
网址配置:
url: '/results/:params?'
获得价值:
var params = JSON.parse($stateParams["params"]); console.log(params.expanded);
去州:
$state.go('home.category.results',{ expanded: true });
angular ui-router:当路径参数更改时如何重新加载状态,但在查询参数更改时如何不重新加载状态?
例如,我希望此导航更改可重新加载状态:
#/detail/1
#/detail/2
但我不希望此导航重新加载状态:
#/detail/1?search=blah
#/detail/1?search=huzzah
根据ui-router文档,设置reloadOnSearch: false
应可完成此操作,但请尝试以下操作。当reloadOnSearch ===false
为时,即使文档说应该更改路径参数,它也不会重新加载状态。
Plunkr:http:
//run.plnkr.co/ZPy9uabYlkMilwdS/#/param
答案1
小编典典这是UI-Router中的错误,已在0.2.15版中修复:
https://github.com/angular-ui/ui-router/releases
升级到最新版本将解决此问题
Angular2 Router 2.0.0是否在相同的URL加载了不同的参数时不重新加载组件?
我的.routing.ts文件中有这个
export const routing = RouterModule.forChild([
{
path: 'page/:id',component: PageComponent
}]);
我的PageComponent
文件检查id参数并相应地加载数据。在路由器的早期版本中,如果我从/ page / 4转到/ page /
25,则该页面将“重新加载”并且组件将更新。
现在,当我尝试导航到/ page / X时,其中X是id,它只会第一次加载,然后url会更改,但是组件不会再次“重新加载”。
是否需要传递某些内容以强制重新加载组件并调用ngOnInit事件?
AngularJS UI路由器 – 更改url没有重新加载状态
services.service('$locationEx',['$location','$route','$rootScope',function($location,$route,$rootScope) { $location.skipReload = function () { var lastRoute = $route.current; var un = $rootScope.$on('$locationChangeSuccess',function () { $route.current = lastRoute; un(); }); return $location; }; return $location; }]);
和控制器
$locationEx.skipReload().path("/category/" + $scope.model.id).replace();
我正在考虑用ui-router替换routeProvider用于嵌套路由,但是在ui-router中找不到。
是可能的 – 对angular-ui路由器做同样吗?
为什么我需要这个?
让我用一个例子解释:
创建新类别的路径是/ category / new
单击保存我显示成功警报,我想要更改路线/类别/新到/ caterogy / 23(23 – 是存储在db中的新项目的ID)
$state.go('.detail',{id: newId})
可以替换
$state.transitionTo('.detail',{id: newId},{ location: true,inherit: true,relative: $state.$current,notify: false })
编辑:如fracz建议,它可以简单地是:
$state.go('.detail',{notify: false})
AngularJS UI路由器$state仅重新加载子状态
这是我的代码:
app.config(function ($stateProvider,$locationProvider,$urlRouterProvider) { $urlRouterProvider.otherwise("/"); $locationProvider.html5Mode(true); $stateProvider .state('home',{ abstract: true,template: '<div ui-view=""></div>',controller: 'HomeController as homeCtrl' }) .state('users',{ parent: 'home',url: '/users',templateUrl: '/User/Index',controller: 'UserController as userCtrl',}) .state('users.createuser',{ templateUrl: '/User/createuser',controller: 'createuserController as cuCtrl' }) .state('users.editUser',{ templateUrl: '/User/EditUser',controller: 'EditUserController as euCtrl',resolve: { userInfo: function (contextInfo,userData) { return userData.get(contextInfo.getUserKey()); } } }) .state('users.addWebItemsForUser',{ templateUrl: '/User/AddWebItemsForUser',controller: 'UserWebItemsController as uwiCtrl' }) .state('users.addReportsForUser',{ templateUrl: '/User/AddReportsForUser',controller: 'UserReportsController as urCtrl' }) .state('users.userGroups',{ templateUrl: '/User/UserGroups',controller: 'UserGroupController as userGroupCtrl' }) //.state('users.logInWebApp',{ // template: '<h3>Logging into web app</h3>',// resolve: { // user: function() { // return { // //companyId: contextInfo.getCustomerKey() // //userId: // //password: // } // } // },// controller: function() { // // need company code,username and password of user then need to open window with webapp url (will that work?) - do we still want to add this functionality? // } //}) .state('links',{ url: '/links',templateUrl: '/Link/Index',controller: 'LinkController as linkCtrl' }) .state('onlrpts',{ url: '/onlineReports',templateUrl: '/OnlineReport/Index',controller: 'OnlineReportController as onlRptCtrl' }) .state('reports',{ url: '/customerReports',templateUrl: '/CustomerReport/Index',controller: 'CustomerReportController as custRptCtrl' }); }) .config(function($provide) { $provide.decorator('$state',function($delegate,$stateParams) { $delegate.forceReload = function() { return $delegate.go($delegate.$current.name,$stateParams,{ reload: true,inherit: false,notify: true }); }; return $delegate; }); });
这是在我的父控制器(UserController)中,当用户被点击时调用的函数:
this.userTreeClick = function(e) { contextInfo.setUserKey(e.Key); contextInfo.setUserName(e.Value); userCtrl.userKey = e.Key; $state.forceReload(); };
所以说我在users.userGroups状态,当我点击另一个用户,我只想要users.userGroups状态被重新加载。这可能吗?我已经通过谷歌和StackOverflow找到了一个答案,但我没有发现任何与我正在尝试的东西完全一样。当我断开检查$状态$ current.name – 名称是正确的 – users.userGroups,但它重新加载所有,而不仅仅是子状态。任何帮助非常感谢!
07000
A method that force reloads the current state. All resolves are
re-resolved,controllers reinstantiated,and events re-fired.Parameters:
state
(optional)
- A state name or a state object,which is the root of the resolves to be re-resolved.
一个例子:
//will reload 'contact.detail' and 'contact.detail.item' states $state.reload('contact.detail');
类似的,我们可以用$ state.go()和它的options参数来实现:
07001
…
options
(optional)
location
…inherit
…relative
…notify
…reload
(v0.2.5) – {boolean=false|string|object},If true will force transition even if no state or params have changed. It will
reload the resolves and views of the current state and parent states.
If reload is a string (or state object),the state object is fetched (by name,or object reference); and \ the transition reloads the
resolves and views for that matched state,and all its children
states.
例如https://github.com/angular-ui/ui-router/issues/1612#issuecomment-77757224 by Chris T:
{ reload: true } // reloads all,{ reload: 'foo.bar' } // reloads top.bar,and any children { reload: stateObj } // reloads state found in stateObj,and any children
一个例子
$state.go('contact',{...},{reload: 'contact.detail'});
我们今天的关于AngularJS转到状态而不重新加载并且没有值的参数和angularjs页面加载后再执行的分享就到这里,谢谢您的阅读,如果想了解更多关于angular ui-router:当路径参数更改时如何重新加载状态,但在查询参数更改时如何不重新加载状态?、Angular2 Router 2.0.0是否在相同的URL加载了不同的参数时不重新加载组件?、AngularJS UI路由器 – 更改url没有重新加载状态、AngularJS UI路由器$state仅重新加载子状态的相关信息,可以在本站进行搜索。
本文标签: