这个问题基于"如何在改变状态时坚持兄弟观点"(plunker).
当我在主导航(mainNav)中更改状态时,我尝试保持视图(内容)不变.
内容应仅由子导航设置,并在更改主导航时保留.
是否有可能在ui-router中保留一个视图,即使状态是遗留的?
angular.module('MyApp', [
'ui.router'
])
.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('index', {
url: '/',
views: {
'@': {
templateUrl: 'layout.html'
},
'mainNav@index': {
template: '<a ui-sref="Main3">Main3 - with sub</a><br />'
+ '<a ui-sref="Main4">Main4 - with sub</a>'
},
'subNav@index' : {
template: '<p>This is the sub navigation</p>'
},
'content@index': {
template: '<p>Content shared for MAINs</p>'
}
}
})
.state('Main3', {
parent: 'index',
url: '/Main3',
views: {
/*'mainNav': {
},*/
'subNav': {
template: '<a ui-sref="Main3.Sub1">Main3.Sub1</a><br …Run Code Online (Sandbox Code Playgroud) 试图base href为angularjs html5网络应用程序设置正确的值在cordova中工作
最初$locationProvider.html5Mode(true)用于 <base href="/">:
在SO和ui-router 常见问题解答中尝试了一些替代方案:
<base href=".">使用html5模式根据这个答案:
Error: Failed to execute 'pushState' on 'History': A history state object with URL 'https://page/' cannot be created in a document with origin https://example.com<base href="./"> 使用html5模式:
Error: 10 $digest() iterations reached. Aborting!消息尝试使用这里提到的frankwallis解决方案,但没有帮助(相同的错误)没有base href用$locationProvider.html5Mode({enabled: true, requireBase: false});
我的app配置定义如下:
myApp.config(['$locationProvider', '$urlRouterProvider', '$stateProvider', …Run Code Online (Sandbox Code Playgroud) html5 angularjs cordova angular-ui-router angular-ui-router-extras
我有一个项目我正在使用带有ui.router的angularJS,如果用户点击某个事件来查看详细信息,则会显示一个后退按钮但是在点击后面时,我们会有一个非常长的事件列表(具有无限滚动) div的滚动重置回顶部!寻找一些关于是否有内置的建议,我可以利用它来记住这个滚动位置,我知道这是锚定服务,但我想知道是否有更适合停止角度重置导航滚动位置的东西?? 因为有一些相似的列表需要在滚动时记住它们的状态..我已经查看并尝试实现ui-router-extras dsr和sticky但是两者都没有工作..
示例在http:// codedef. com/hapzis_poc / .不是完整的证明,但应该能够向下滚动事件,点击并返回并保持在相同的滚动位置..
在我的Angular JS应用程序中,我有2个视图 - v1和v2以及1个控制器 - appCtrl.
我已经配置了如下的UI路由器
.state('profile.v1', {
url: '/v1',
templateUrl: 'v1.html',
controller: 'appCtrl'
})
.state('profile.v2', {
url: '/v2',
templateUrl: 'v2.html',
controller: 'appCtrl'
})
Run Code Online (Sandbox Code Playgroud)
我在appCtrl中有2个函数--fv1和fv2.
我想在调用route'/ v1'时执行fv1,在调用route'/ v2'时执行fv2.
有人可以建议吗?
javascript angularjs single-page-application angular-ui-router angular-ui-router-extras
问题陈述 :
我有一个按钮"添加评论",我应该能够只在我登录系统时添加评论.
但问题是我登录后无法回到"添加评论"页面,因为我不知道以前的状态还是无法获得以前的状态.
这有什么更清洁的解决方案吗?我应该有登录页面模式而不是新页面吗?
我已经看到了关于以前状态的所有问题以及可能的答案(是的,我正在考虑$ roots roots和$ stateChangeSuccess).但它没有明确提出解决方案.
其他可能的解决方案如下 http://christopherthielen.github.io/ui-router-extras/example/previous/index.html#
我也看到了 https://github.com/angular-ui/ui-router/issues/92.但同样,我不确定什么是正确的答案.
有人可以明确说明一个好的解决方案 使用rootcope是一个好的吗?
angularjs angularjs-scope angular-ui-router angular-ui-router-extras
我是 angular 的新手,当用户通过单击搜索结果中的链接导航到详细信息页面时,我需要维护搜索结果页面的状态(即保留搜索结果网格的排序和过滤值) grid 并再次导航回搜索页面。我尝试使用 CustomReuseStartegy,但我面临两个问题:
如果有人可以提供有关如何以及何时使用路由重用策略或不同的解决方案来重新附加组件来处理我的要求的见解,那将会很棒。
我自己尝试在登录后根据用户类型注册未来状态.
例如:如果user_type是buyer,那么我需要注册我维护的所有路由器futureStates_buyer.json
如果user_type是admin,那么我需要注册我维护的所有路由器futureStates_admin.json
实验1(按样本)
示例网址:http://christopherthielen.github.io/ui-router-extras/example/future/
我可以在配置阶段设置以下配置.我知道提供程序设置应该在配置阶段.
app.config(function($stateProvider, $urlRouterProvider, $futureStateProvider) {
$futureStateProvider.stateFactory('ngload', ngloadStateFactory);
$futureStateProvider.addResolve(loadAndRegisterFutureStates);
});
Run Code Online (Sandbox Code Playgroud)
工作演示:http://plnkr.co/edit/9dUm0f6g2V5PM4m7YlTD?p = preview
实验2(这是我正在尝试的)
但是,就我而言,我不想在配置阶段为整个应用程序注册所有路由器.它将是非常高的配置.所以我正在尝试的是,一旦登录,我可以在登录响应中获得用户类型,基于该用户类型,我需要注册未来状态.
//config phase
app.config(function($stateProvider, $urlRouterProvider, $futureStateProvider) {
//Planned to use futureStateProvider later in controller
lazyLoad = {stateProvider: $stateProvider, futureStateProvider:$futureStateProvider};
});
//Login controller
app.controller('LoginController', ['$scope', '$rootScope', '$state', '$http', function($scope, $rootScope, $state, $http) {
$scope.doLogin = function(){
//After successfull login
//Service invocation comes here
console.log("Logged in!!");
$rootScope.userInfo = …Run Code Online (Sandbox Code Playgroud) 我有一个页面,其中包括分布在几个选项卡上的HTML表单元素.我希望用户能够切换标签而不会丢失他在表单元素上输入的数据(我还想保存不必要的数据重新加载).我仍然希望能够将某个链接传递给特定标签.
这听起来像ui-extras粘性状态应该完全符合我的需要.除了我一直没有成功地让它工作.
我研究了示例源代码,当我启动示例时,例如在controllers.js的第57行中找到的库存控制器的构造函数中使用firebug设置断点,我看到构造函数只被触发一次.然而,我的控制器构造函数一次又一次地被触发,我的应用程序的行为非常类似于粘性状态不存在,尽管如果我启用粘性状态调试它告诉我它正在做某事(停用和重新激活状态).
我发现有人声称粘性状态仅适用于此答案中的注释中的命名视图,所以我试图给我的视图命名,但这没有任何区别.
我尝试在我的标签之前插入一个明确的"根状态".
我尝试通过ng-controller或控制器定义在状态中插入控制器.
github上的例子是一个很好的炫耀,但它不仅仅是最小的,而且很难看到实际需要什么,什么不是.
什么是开始使用粘性状态所需的最小例子?(额外奖励:我的代码出了什么问题?).
作为参考,这里有一个尝试失败的傻瓜(参见历史以查看先前尝试的选择).
这是我目前失败的源代码:
var log = '';
function mkController(msg) {
return function($scope) {
// This is the constructor of a controller
// I'd expect this constructor to the first time a state is loaded.
// When switching to a sister state and back it should not be called again.
if (!$scope.random) {
// I expect the $scope object to be retained when …Run Code Online (Sandbox Code Playgroud) 我正在使用UI-Router(-extras)开发AngularJs应用程序,其中我使用以下设置:
.state('root', {
url: '/{language:(?:nl|en)}',
views: {
'root': {
templateUrl: 'app/root/root.html',
controller: 'RootController'
}
}
})
.state('root.main', {
views: {
'main': {
templateUrl: 'app/main/main.html',
controller: 'MainController'
}
},
sticky: true
})
.state('root.modal', {
url: '/{locale:(?:nl|fr)}',
views: {
'modal': {
templateUrl: 'app/modal/modal.html',
controller: 'ModalController'
}
}
})
Run Code Online (Sandbox Code Playgroud)
根状态定义URL中的语言.此外,我有几个模态和主要状态,它们有自己的URL(即root.main.home=> /en/home).
现在我想要一些没有URL的模态.如何让状态忽略他父母的URL?
angularjs angularjs-routing angular-ui-router angular-ui-router-extras