0
....           

.state('books', {
            url: '/book/chapter/:chap',
            templateUrl: "views/chapter.html",
            params: { chap: .........}
        })   

你好!我在特定控制器中有一个变量,我想将它的值传递给路由参数。最终,我想更改该变量的值,以便可以使用相同的路由创建新的 url。

正如您可能已经注意到的,我正在使用 ui-router。

我也很好奇您将如何解决以下问题:基本上我想打开一本书的特定章节,比如说第 5 章。然后我想在页面左侧显示每个剩余章节的链接,那就是为什么我要更改变量的值。你将如何使用 ng-repeat 解决这个问题?我正在考虑使用getArticle(如下所示)获取章节号,然后使用ng-repeat ng-repeat 其余章节?想法?

angular
    .module('BookLibrary')
    .controller("ChapterController", ["$scope","stateParams", "ChapterControllerService", function($scope, $stateParams, ChapterControllerService){

        $scope.chapterList = ChapterControllerService.chapters;
        $scope.getArticle = chapterList[0].chapter;

    }]);

章节列表如下所示:

chapterList = [
        { 
            chapter: "1",
            content: "Chapter 1 goes here"
        },
        {
            chapter: "2",
            content: "Chapter 2 goes here"
        },
        {
            chapter: "3",
            content: "Chapter 3 goes here"
        }
    ];
4

1 回答 1

0

这里有多个问题,所以从你的状态参数开始。在状态参数中,您可以在这样的状态下声明参数的默认值。

.state('books', {
        url: '/book/chapter/:chap',
        templateUrl: "views/chapter.html",
        params: { chap: null}
    })   

这会将值默认为 null。也许你总是想默认第 1 章?如果是这种情况,您可以使用params: {chap: '1'}(因为您使用的是字符串)。要将值传递给状态,有多种方法可以做到。假设您正在使用ui-sref,您可以直接在链接中传递参数值。

ui-sref="books({ chap: 3 })"

但是,您希望使用 ng-repeat 获得来自对象的链接列表。所以你可以做这样的事情

<ul>     
   <li ng-repeat="chapter in chapterList">
      <a ui-sref="books({chap: chapter.chapter})">{{chapter.chapter}}</a>
   </li>
</ul>

您已经在控制器中包含了 $stateParams ,因此您只需要像这样从中获取参数

angular
.module('BookLibrary')
.controller("ChapterController", ["$scope","$stateParams", 
"ChapterControllerService", function($scope, $stateParams, 
ChapterControllerService){

    $scope.currentChapter = $stateParams.chap;

    $scope.chapterList = ChapterControllerService.chapters;
    $scope.getArticle = chapterList[0].chapter;

}]);
于 2017-09-05T19:54:52.300 回答