如何将AngularJS表达式传递给控制器

时间:2015-06-08 04:44:11

标签: javascript angularjs

我想将 AngularJS Expression 值传递给控制器​​。

HTML代码:

<div data-ng-controller="AlbumCtrl">
<div data-ng-repeat="z in songInfo">
      <div data-ng-repeat="b in z.album">
  {{b.tracks}}
      </div>
</div>

 <!-- Pagination   -->      
 <div class="pageing">
<a class="prev" data-ng-disabled="currentPage == 0" data-ng-click="currentPage=currentPage-1">prev</a>
<a class="pageingg" href="#/song">{{currentPage+1}}/{{numberOfPages()}}</a>
<a class="next" data-ng-disabled="currentPage >= data.length/pageSize - 1" data-ng-click="currentPage=currentPage+1">next</a>
</div>

</div>

此处 {{b.tracks}} 是相册中曲目总数的 count 。我必须将此数据传递给控制器​​ ALbumCtrl

控制器:

.controller('AlbumCtrl', function($scope, $routeParams, $http) {
    $scope.album_id = $routeParams.albumId;
    $http.post('api-call.php', { albumid: $scope.album_id, evt: 13 }).success(function(data) {
        $scope.songInfo = data;
      }); 

    //Pagination
    $scope.currentPage = 0;
    $scope.pageSize = 10;
    $scope.data = [];
    $scope.numberOfPages=function(){
        return Math.ceil($scope.data.length/$scope.pageSize);                
    };
    for (var i=0; i<AngularJS expression value; i++) {
        $scope.data.push("Item "+i);
    }
});

此处,控制器 AngularJS expression value 是我们必须获得的值。

任何帮助都会非常值得注意。感谢

2 个答案:

答案 0 :(得分:0)

如果它只有一个值。然后你可以轻松地从控制器获取值,你不需要传递它。

尝试$scope.songInfo[0].album[0].tracks

这样的东西
  for (var i=0; i< $scope.songInfo[0].album[0].tracks; i++) {
        $scope.data.push("Item "+i);
    }

答案 1 :(得分:0)

试试这两行,

var obj = JSON.parse($scope.songInfo);
var track = obj.root.tracks[0];