相关疑难解决方法(0)

AngularJS:在不完全重新加载控制器的情况下更改哈希和路由

我有一个控制器,有这样的路线:

#/用品/ 1234

我想在不完全重新加载控制器的情况下更改路径,因此我可以保持控制器中其他内容的位置不变(列出滚动)

我可以想到几种方法来做到这一点,但它们都非常难看.做这样的事情有最好的做法吗?我尝试使用reloadOnSearch:false,但它似乎没有改变任何东西.

controller routes reload persist angularjs

35
推荐指数
4
解决办法
4万
查看次数

禁止在查询参数更改时重新加载基于ui-router的视图

更新的问题

标题中的问题仍然存在 - 是否可以捕获?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)

anchor angularjs angular-ui-router

15
推荐指数
2
解决办法
1万
查看次数

event.preventDefault()不适用于angularjs app中的routeChangeStart

希望任何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()就不起作用了.任何人都可以指出可能出错的地方

javascript routes angularjs angularjs-directive

14
推荐指数
3
解决办法
2万
查看次数

使用AngularJS和模态对话框清理URL

我正在使用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

5
推荐指数
1
解决办法
2509
查看次数

无需在AngularJS中重新加载控制器即可更改哈希

我正在研究货币转换器,我有网址#/currency/50/USD/to/EUR,其中50,USD和EUR是参数.现在我有一个交换功能,交换货币并保持转换的价值,我想改变URL,就像#/currency/50/EUR/to/USD没有重新加载控制器,只需更改哈希.我对如何处理纯js有一个想法,但是有角度方式的解决方案吗?

url controller angularjs

4
推荐指数
2
解决办法
1万
查看次数