2015-05-12 2 views
1

Я хочу показать список продуктов с подробностями и список моделей продуктов, которые проверены в подробном списке, но я хочу сделать это только с одним запросом на получение. Я имею в виду, что я получу json продуктов, и я буду использовать несколько раз на странице.Несколько итераций от одного ответа

Вот мой список продуктов с подробной информацией:

<div class="box-content" ng-controller="PostsCtrl" ><div> 
<input type="search" ng-model="search"></div> 
<table class="table table-striped table-bordered bootstrap-datatable datatable dataTable" id="DataTables_Table_0" aria-describedby="DataTables_Table_0_info"> 
<thead> 
<tr> 
<th><tags:label text="productid"/></th> 
<th><tags:label text="main.category"/></th> 
<th><tags:label text="sub.category"/></th> 
<th><tags:label text="brand"/></th> 
<th><tags:label text="model"/></th> 
<th><tags:label text="sku"/></th> 
<th><tags:label text="active"/></th> 
<th></th> 
</tr> 
</thead> 
<tbody> 
    <tr id="actionresult{{$index + 1}}" ng-repeat="post in posts | filter:search"> 
    <td>{{post.productid}}</td> 
    <td>{{post.subcategory}}</td> 
    <td>{{post.subcategoryid}}</td> 
    <td>{{post.brand}}</td> 
    <td>{{post.model}}</td> 
    <td>{{post.brandid}}</td> 
    <td><input type="checkbox" ng-model="checked" ng-checked="post.isactive"></td> 
    </tr> 

Список моделей:

<ul ng-controller="PostsCtrl"> 
    <li ng-repeat="post in posts | filter:checked">{{post.model}}</li> 
</ul> 

Вот мой контроллер:

<script> 
    var app = angular.module("MyApp", []); 

    app.controller("PostsCtrl", function($scope, $http) { 
     $http.get('http://localhost/admin.productss/searchwithjson'). 
     success(function(data, status, headers, config) { 
      $scope.posts = data; 

     }). 
     error(function(data, status, headers, config) { 

     }); 
    }); 
    </script> 

Я думаю, что так, как я выше ; Я делаю запрос 2. Я не могу перечислить также проверенные модели.

Как я могу изменить свой код?

спасибо.

+0

Я не уверен, почему вы не можете просто использовать одни и те же данные в обоих местах ...? – Samsquanch

+0

На самом деле я спрашиваю, как использовать одни и те же данные в обоих списках. Я очень новенький. – GaripTipici

+0

, поэтому оба ваших HTML находятся в разных контроллерах. Я прав. Если это так, используйте службу, чтобы создать 'http call' и заполнить массив' posts' и использовать между контроллерами. Если нет, вы можете использовать массив 'posts', где бы вы ни захотели внутри включенного контроллера –

ответ

1

Вариант 1:

положил оба элемента нисходящих один и тот же элемент с помощью контроллера:

<div class="box-content" ng-controller="PostsCtrl" > 

    ...Some other html.... 

    <table> 
     <tr id="actionresult{{$index + 1}}" ng-repeat="post in posts | filter:search"> 
      <td>{{post.productid}}</td> 
      <td>{{post.subcategory}}</td> 
      <td>{{post.subcategoryid}}</td> 
      <td>{{post.brand}}</td> 
      <td>{{post.model}}</td> 
      <td>{{post.brandid}}</td> 
      <td><input type="checkbox" ng-model="post.checked"></td> 
     </tr> 
    </table> 

    ...Some other html.... 

    <ul> 
     <li ng-repeat="post in posts | filter:{checked:true}">{{post.model}}</li> 
    </ul> 

</div> 

Вариант 2:

в кэше контроллера просьбе:

app.controller("PostsCtrl", function($rootScope, $scope, $http) { 
    $rootScope.cache = $rootScope.cache || {}; 

    if(!$rootScope.cache.posts){ 
     $http.get('http://localhost/admin.productss/searchwithjson'). 
     success(function(data, status, headers, config) { 
      $rootScope.cache.posts = $scope.posts = data; 
     }). 
     error(function(data, status, headers, config) {}); 
    } else { 
     $scope.posts = $rootScope.cache.posts; 
    } 
}); 
+0

Как насчет списка проверенных моделей? – GaripTipici

+1

Список проверенных моделей есть в Варианте 1. Внизу. –

+0

Он все еще показывает все, а не только чеки. – GaripTipici