AngularJS应用无法打开已配置的模态

fac*_*urn 8 javascript angularjs

我正在使用angularjs构建一个应用程序,我需要在其中显示一个页面,然后在用户粘贴url时打开一个包含详细信息的模式窗口。

路由器配置如下:

.state('main.legalentitites', {
    url: '/products/{productId:string}',
    views: {
        'content@': {
            templateUrl: 'app/views/productdetail.html',
            controller: 'productDetailCtrl',
        },
    },
})
.state('main.products.add', {
    url: '/products/{productId:string}/add',
    onEnter: function($state, $modal) {
        $modal
            .open({
                templateUrl: 'app/views/productModal.html',
                resolve: {},
                controller: 'ProductCtrl',
            })
            .result.then(function(result) {
                if (result) {
                    return $state.transitionTo('main.products')
                }
            })
    },
})
.$urlRouterProvider.otherwise(function($injector, $location) {
    var $state = $injector.get('$state')
    $state.go('main.home')
})
Run Code Online (Sandbox Code Playgroud)

当我输入url时https://localhost:44821/products/6cbc799a-fdc8-4e4d-ac27-0a5165423641/add,它不会导航到页面,并且模式也不会打开。控制台中也没有错误。它总是转到否则配置的部分。可能是什么问题?

小智 0

文档说:

'/user/:id' - 匹配 '/user/bob' 或 '/user/1234!!!' 甚至是“/user/”,但不是“/user”或“/user/bob/details”。第二个路径段将被捕获为参数“id”。

和:

'/user/{id}' - 与前面的示例相同,但使用大括号语法。

因此,我建议您将网址从“/products/{productId:string}/add”更改为“/products/add/{productId:string}”。它应该有效。