2016-04-12 17 views
3

ile bağlantıya tıklandığında bir JSON modeline gidin Bir kitabı seçmek için AngularJS with Dropdowns içinde bir kitaplık gerçekleştirmek ve kitabın bir bölümünü kullanmak istiyorum. Bir bölümün kesilmesinden sonra seçilen bölüm metni görüntülenir. Tüm kitaplar bir JSON biçimindedir. Sol alt köşedeki bağlantı ile sonraki bölüme nasıl giderim (resme bakın)?AngularJS

// index.html 
<div ng-controller="ArticlesCtrl"> 
    <br/> 
    <div class="dropdown"> 
     <form class="form" name="myForm"> 
     <label for="mySelect">Choose a Book:</label> 
     <select class="dropdown-select" name="mySelect" id="mySelect" ng-options="option.bname for option in articles" ng-model="articles.bname" ng-change="updateBook()"></select> 
     </form> 
    </div> 
    <div class="dropdown"> 
     <form class="form" name="myForm" ng-show="chapters" class="ng-hide"> 
     <label for="mySelect">Choose a chapter:</label> 
     <select class="dropdown-select" name="mySelect" id="chapter" ng-options="option.Icnumber for option in selected" ng-model="selected.Icnumber" ng-change="updateChapter()"></select> 
     </form> 
    </div> 

    <hr> 

    <p ng-repeat="paragraph in paragraphs track by paragraph.Ivnumber">{{paragraph.Ivnumber}} {{paragraph.Itext}}"</p> 

    <a>Next Chapter</a> 

</div> 

Picture: First i choose a Book and than the chapter dropdown appears

.controller('ArticlesCtrl', function($scope, $location, $http, Cart){ 
$scope.cart = Cart; 
$http.get('lib.json').then(function(articlesResponse) { 
    $scope.articles = articlesResponse.data; 
    $scope.chapters = false; 
    $scope.paragraph = false; 
    $scope.show = false; 
    $scope.updateBook = function() { 
    var Item = $scope.articles.bname.Ibnumber; 
    var indexItem = Item - 1; 
    $scope.selected = articlesResponse.data[indexItem].CHAPTER; 
    $scope.chapters = true; 
    } 
    $scope.updateChapter = function() { 
    var Item = $scope.articles.bname.Ibnumber; 
    var indexItem = Item - 1; 
    var Chapter = $scope.selected.Icnumber.Icnumber; 
    var indexChapter = Chapter - 1; 
    $scope.paragraphs = articlesResponse.data[indexItem].CHAPTER[indexChapter].PARAGRAPH; 
    $scope.paragraph = true; 
    } 
}); 
}) 

Teşekkür

cevap

1

Sadece bu deneyebilirsiniz app.js. updateChapter işlevini jenerik yapın.

<a ng-click="updateChapter(selected.Icnumber + 1)">Next Chapter</a> 

Değişim updateChapter fonksiyonu buna göre

$scope.updateChapter = function(chapter) { 
    var Item = $scope.articles.bname.Ibnumber; 
    var indexItem = Item - 1; 
    //update the select menu 
    $scope.selected.Icnumber = chapter; 
    var indexChapter = chapter - 1; 
    $scope.paragraphs = articlesResponse.data[indexItem].CHAPTER[indexChapter].PARAGRAPH; 
    $scope.paragraph = true; 
} 

ve Cevabınız için ng-change="updateChapter()"ng-change=updateChapter(selected.Icnumber)" için

+0

teşekkürler. İlk kez iyi çalışıyor ama şimdi açılır listeyi de güncellemem gerekiyor, bağlantıyı iki kez tıklayamıyorum. Bunu nasıl yapabilirim? – Developer

+0

Bir sonraki bölümdeki bağlantıda bir + 1'liği kaçırdınız. Umarım şimdi çalışır –

+0

Bu sadece $ scope.selected.Icnumber' ayarlanarak güncellenebilir. Cevabı güncellendi. –