У меня есть два контроллера, которые отображают несколько категорий и подкатегорий.
var app = angular.module('myApp', ['ngRoute']);
app.config(function($routeProvider) {
$routeProvider.
when('/', {
templateUrl: 'xyz/category.html',
controller: 'myCtrl'
}).
when('/subcategory/:id', {
templateUrl: 'xyz/subcategory.html',
controller: 'subcategoryCtrl'
}).
otherwise({
redirectTo: '/'
});
});
Контроллер 1
app.controller('myCtrl', function($scope, $http) {
alert("myCtrl");
$http.get("http://api.remix.bestbuy.com/v1/categories?apiKey=anzdbv4h3y5tfk2quyngxpsa&format=json")
.success(function (response) {$scope.sample = response.categories;
});
});
Контроллер 2
app.controller('subcategoryCtrl', function($scope,$routeParams,$http) {
console.log("http://api.remix.bestbuy.com/v1/categories(id="+$routeParams.id+")?apiKey=anzdbv4h3y5tfk2quyngxpsa&format=json")
$http.get("http://api.remix.bestbuy.com/v1/categories(id="+$routeParams.id+")?apiKey=anzdbv4h3y5tfk2quyngxpsa&format=json")
.success(function (response) {
var datalen=JSON.stringify(response.categories[0].subCategories.length);
alert(datalen);
if(datalen == "0" ){
alert("no data");
var idvalue = $routeParams.id;
alert(idvalue);
}
else{
$scope.subproduct = response.categories[0].subCategories;
}
// alert("response.categories[0].subCategories-->"+response.categories[0].subCategories);
});
});
Файл представлений обоих контроллеров выглядит так:
** Просмотр категории **
<table>
<tr>
<th>Products</th>
</tr>
<tr ng-repeat="product in sample">
<td>
<a href="#/subcategory/{{$index=product.id}}">
{{product.name}}
</a>
</td>
</tr>
</table>
Просмотр подкатегории
<table>
<tr>
<th>subcategory </th>
</tr>
<tr ng-repeat="subcategory in subproduct">
<td>
<a href="#/subcategory/{{$index=subcategory.id}}">
{{subcategory.name}}
</a>
</td>
</tr>
</table>
Он извлекает все подкатегории, но я хочу получить продукты, когда длина подкатегории станет равной 0, как указано во втором контроллере из этого api:
**http://api.remix.bestbuy.com/v1/products(categoryPath.id="Id_value")?apiKey=anzdbv4h3y5tfk2quyngxpsa&page=1&format=json**
Когда длина stringifi становится равной нулю, я хочу использовать текущий идентификатор runepamams для доступа к этому идентификатору в другой контроллер, тогда я могу получить доступ к моему списку продуктов, передав значение id маршрутизации в контроллер продуктов и извлечение? Как я могу получить доступ к идентификатору?
Ваша проблема не в контроллере, а в представлении. Что вы ожидаете увидеть здесь?
<a href="#/subcategory/{{$index=subcategory.id}}">
Проверьте свои ссылки в отладчике/консоли браузера. Измените его на
<a href="#/subcategory/{{subcategory.id}}">
success
использоватьthen
. Используйте сервис для выполнения запросов$http
. И не используйте$rootScope
, создайте сервис, который имеет геттеры и сеттеры для вашего проекта. Вот как вы делитесь своими данными в Angular.