Angular - 通过$ routeParams从JSON数据中选择对象

时间:2016-02-01 20:11:57

标签: javascript arrays angularjs json ngroute

我试图显示我的json文件中的数据,如下所示:

[
  {
    "category":"category1",
    "link":"category1",
    "expand":false,
    "keyword":"category1, category1 online, category1 something"
  },
  {
    "category":"category2",
    "link":"category2",
    "expand":false,
    "keyword":"category2, category2 online, category2 something"
  }
]

我也在我的控制器中使用$ routeProvider:

var myApp = angular.module('myApp', [
    'ngRoute',
    'MyControllers'
]);

myApp.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider.when('/:itemName', {templateUrl: function(param){ 
        return'partials/'+ param.itemName +'.html';
    }, controller: 'ContentCtrl'});
    $routeProvider.otherwise({redirectTo: '/category1'});
}]);

var MyControllers = angular.module('MyControllers', ['ngAnimate']);

MyControllers.controller('ContentCtrl', ['$scope', '$http', '$routeParams', function($scope, $http, $routeParams) {
    $http.get('js/data.json').success(function(data){
        $scope.meta = data;
        $scope.whichItem = $routeParams.itemName.indexOf()+1;
  });
}]);

最后是一个模板:

<html ng-app="myApp">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <section ng-view>
        <h1>{{meta[whichItem].h1}}</h1>
    </section>
</body>
</html>

所以问题是param $whichItem总是返回0作为值。例如,当我将路线更改为/category2并且显示来自json数据的相同关键字时,它并不想要显示。这有什么问题?

1 个答案:

答案 0 :(得分:0)

看来你想获得stringToSign = 'application/json,' + CryptoJS.MD5('').toString(CryptoJS.enc.Base64) + ',' + url + ',' + timestamp; 的最后一个字符,它是一个整数,并使用这个整数来确定从JSON数组中获取的正确对象。

当应用程序路由到itemName时,category2itemName。这意味着从JSON数组获取的对象是第二个;数组中索引category2处的对象。

您可以通过在最后一个索引处切换字符串并将其转换为整数来获得此结果。

1