我有一个控制器,有这样的路线:
#/用品/ 1234
我想在不完全重新加载控制器的情况下更改路径,因此我可以保持控制器中其他内容的位置不变(列出滚动)
我可以想到几种方法来做到这一点,但它们都非常难看.做这样的事情有最好的做法吗?我尝试使用reloadOnSearch:false,但它似乎没有改变任何东西.
更新的问题
标题中的问题仍然存在 - 是否可以捕获?parameters和取消视图重新加载.
原始问题:我需要为我的应用程序添加锚点支持(主题的锚点).
这是我有多远:
angular.module('app.topics', [
'ui.state',
'ui.router',
'restangular'
'app.topics.controllers'
])
.config(function config($stateProvider) {
$stateProvider.state('viewtopic', {
url: '/topics/:slug?section',
onEnter: function($stateParams) {
// Works, as state has been reloaded.
console.log('$stateParams', $stateParams);
},
resolve: {
topic: function ($stateParams, Topic) {
// Wrapper around Restangular. Returns promise.
return new Topic().get($stateParams.slug);
}
},
views: {
'main': {
controller: 'TopicCtrl',
templateUrl: 'topics/templates/details.tpl.html'
},
'sidebar': {
controller: 'SidebarCtrl',
templateUrl: 'topics/templates/sidebar.tpl.html'
}
}
});
});
angular.module('app.topics.controllers', [])
.controller('TopicCtrl', function ($scope, topic, $rootScope, …Run Code Online (Sandbox Code Playgroud) 希望任何angularjs大师都可以帮助我.这是我的angularjs代码
$scope.$on('$routeChangeStart', function(event, next, current) {
if ($scope.myForm.$dirty) {
if(!confirm("Unsaved, do u want to continue?")) {
event.preventDefault();
}
}
});
Run Code Online (Sandbox Code Playgroud)
当数据变脏时,它会在浏览器后退按钮中发出警告,但是当点击取消或确定时它仍然完成路线更改.这样的话event.preventDefault()就不起作用了.任何人都可以指出可能出错的地方
我正在使用AngularJS + UI Bootstrap提供的"模态"指令.模态对话框效果很好,但我有一个问题:URL没有变化.
例如,我的AngularJS应用程序具有为"/ people"设置的路线,该路线显示人员列表.当用户点击某个人时,会出现一个模态对话框并显示详细信息.我试图弄清楚如何修改URL而不实际导致$ routeProvider重新执行控制器.
例如,我可以在我的路线中有类似的东西:
$routeProvider.
when('/people', {controller: PeopleCtrl, templateUrl: 'templates/people.html'}).
when('/people/:personId', {controller: PeopleCtrl, templateUrl: 'templates/people.html'}).
Run Code Online (Sandbox Code Playgroud)
然后在我的PeopleCtrl中我可以这样做:
if ($routeParams.personId) {
$scope.editPerson({id: $routeParams.personId});
}
Run Code Online (Sandbox Code Playgroud)
这基本上调用了我绑定的同一个函数,点击人行.这适用于允许我的应用程序响应像/ people/123这样的URL,但我无法弄清楚如何让URL从/ people跳转到/ people/123然后回到/ people作为模态对话框打开和关闭.
显然,我可以调用$ location.path("/ people"),但问题是PeopleCtrl得到重新启动,我想避免这种情况,因为应该保留模态"后面"的状态.
换句话说:我正在寻找一种方法来更改URL /位置,而不会检测到正常的$ routeProvider更改.
谢谢!
modal-dialog twitter-bootstrap angularjs angular-ui-bootstrap
我正在研究货币转换器,我有网址#/currency/50/USD/to/EUR,其中50,USD和EUR是参数.现在我有一个交换功能,交换货币并保持转换的价值,我想改变URL,就像#/currency/50/EUR/to/USD没有重新加载控制器,只需更改哈希.我对如何处理纯js有一个想法,但是有角度方式的解决方案吗?
angularjs ×5
controller ×2
routes ×2
anchor ×1
javascript ×1
modal-dialog ×1
persist ×1
reload ×1
url ×1