2017-09-05 188 views
0
....   

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

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

我正在使用ui-router,因为您可能已经注意到了。

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

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

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

    }]); 

chapterList看起来是这样的:

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

怎么可能,我们知道?你没有告诉我们什么是$ scope.chapterList,也不是$ scope.getArticle。不知道你的模型,我们不能告诉你如何使用它。 –

+0

@JBNizet我的坏,那里是:) –

+0

所以,你需要'{{ c.content }}'。您需要将$ scope.remainingChapters设置为从下一章开始的子数组。你有什么尝试?具体问题是什么?为什么你使用字符串而不是数字作为章节号? –

回答

0

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

.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; 

}]); 
相关问题