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

时间:2019-03-06 14:26:41

标签: 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')
})

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

1 个答案:

答案 0 :(得分:0)

Documentation说:

  

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

和:

  

'/ user / {id}'-与上一个示例相同,但使用花括号语法。

因此,我建议您将url从'/ products / {productId:string} / add'更改为'/ products / add / {productId:string}'。应该可以。