角度ui-router子状态解析被父母覆盖

时间:2017-01-14 02:06:53

标签: angularjs angular-ui-router

我有两个州

var books = {
    name: "books",
    url: "/books", 
    component: "booksComponent",
}

var specificBook = {
    name: "books.specific",
    url: "/{Id}", 
    component: "booksComponent",
    resolve : {
        Id: ["$stateParams", getId]
    }
}

$stateProvider.state(books);
$stateProvider.state(specificBook);

function getId($stateParams){
    return $stateParams.Id;
}

但由于某些原因,当我到达网址#/books/12345时,该组件收到的ID为undefined

有什么不对?我应该以不同的方式指定我的路线吗?

2 个答案:

答案 0 :(得分:0)

当您拥有URL时,它们具有被称为参数的动态部分,您可以为指定参数的那些选项提供多个选项。

$stateProvider
.state('books.specific', {
    url: "/books/:id",
    templateUrl: 'books.specific.html',
    controller: function ($stateParams) {
        expect($stateParams).toBe({id: "42"});
    }
})

<强>(OR)

或者,您可以使用大括号。

url: "books/{Id}"

如果您遇到问题#/ books / 12345 ,则必须将您的网址更改为模式2 网址:&#34;图书/ {Id}&#34; ,然后你就可以按照自己的意愿工作了。

问候。

答案 1 :(得分:0)

你可以这样做:

resolve: {
    Id: function ($stateParams) {
        return $stateParams.Id;
    }
}

我不知道为什么你会想要$ stateParams.Id可以注入你的控制器并直接使用。请记住,您需要添加“ID&ID”。到你的控制器功能,以便使用它。干杯