2015-07-27 3 views
2

Я только начал с использования AngularJS для своего веб-приложения, это очень просто, но теперь я не могу продолжать.отношения между моделями AngularJS

Я делаю заявку на шинную компанию.

This мои модели отношений:

Марка имеет 0 или больше типов марки (модели) Шина имеет отношение к одной марки и бренда типа

Я хочу кэшировать Бренды и releted Типы торговых марок.

После того, как я уберу эти контроллеры в контроллере, я хочу получить шины и связать их с BrandType и брендом.

Это мои файлы JSON.

Бренды

[ 
    { 
     "id":1, 
     "name":"Continental", 
     "created_at":"-0001-11-30 00:00:00", 
     "updated_at":"2015-07-15 20:45:35" 
    }, 
    { 
     "id":2, 
     "name":"Michelin", 
     "created_at":"2015-07-15 21:03:56", 
     "updated_at":"2015-07-17 12:14:05" 
    } 
] 

Типы марка относится к Брэнд

{ 
     "id":1, 
     "name":"ContiSportContact3", 
     "brand_id":1, 
     "created_at":"-0001-11-30 00:00:00", 
     "updated_at":"-0001-11-30 00:00:00" 
    }, 
    { 
     "id":2, 
     "name":"ContiSportContact4", 
     "brand_id":1, 
     "created_at":"-0001-11-30 00:00:00", 
     "updated_at":"-0001-11-30 00:00:00" 
    }, 
    { 
     "id":3, 
     "name":"Pilot Alpin", 
     "brand_id":2, 
     "created_at":"-0001-11-30 00:00:00", 
     "updated_at":"-0001-11-30 00:00:00" 
    } 
] 

Шины (должен быть связан с брендом и торговой марки типа, потому что мне нужно, чтобы показать это в таблице)

[ 
    { 
     "id":3, 
     "tire_number":1011, 
     "brand_id":2, 
     "brand_type_id":3, 
     "category_id":1, 
     "created_at":"-0001-11-30 00:00:00", 
     "updated_at":"-0001-11-30 00:00:00", 
     "number":0, 
     "width":225, 
     "height":55, 
     "diameter":16, 
     "other":0, 
     "load_factor":"95", 
     "speed":"h", 
     "mms":"6,5-7", 
     "season_id":3 
    } 
] 

У меня уже есть это, и он работает, но мне нужно показать название бренда и название бренда вместо ID.

<tr ng-repeat="tire in tires"> 
        <td><%tire.tire_number%></td> 
        <td><%tire.brand_id%></td> 
        <td><%tire.brand_type_id%></td> 
        <td><%tire.season_id%></td> 

        <td><%tire.width%></td> 
        <td><%tire.height%></td> 
        <td><%tire.diameter%><%tire.other%></td> 
        <td><%tire.load_factor%></td> 
        <td><%tire.speed%></td> 
        <td><%tire.mms%></td> 

       </tr> 

Это должно быть легко, но я много искал, и я не мог найти прямого решения.

+1

created_at и updated_at указывают, что вы, по-видимому, используете ORM. Считаете ли вы, что нужно наладить там отношения и поставлять «Угловые» готовые к использованию данные? Это гораздо более страшно. – estus

+0

Да, это может быть решение, но я нахожу его более удобным для загрузки из кэшированного списка, потому что мне нужно загружать бренды и типы брендов в любом случае из-за выбора полей на моей веб-странице. –

+0

Теперь я займусь этим: https://github.com/psgibbs/angular-relational, похоже, что он делает то, что я хочу выполнить –

ответ

1

Это относительно легко преобразовать массив Brands в HashMap с использованием идентификатора в качестве ключей, которые затем можно использовать для очень простого поиска имен на основе brand_id каждой шины

$scope.brandNames = {}; 
brandData.forEach(function(item) { 
    $scope.brandNames[item.id] = item.name 
}); 

продуцируют бы:

{ 
    1:"Continental", 
    2:"Michelin" 
} 

Затем в окне вы можете сделать:

<td>{{brandNames[tire.brand_id]}}</td> 

Demo using service to pass hashmap to controller

+0

Спасибо за ваш ответ! Я рассмотрю это, когда снова буду работать над этим проектом! Если это сработает, я соглашусь. –

+0

Ничего себе очень круто, что вы сделали демо! Я принял ваш ответ! –

Смежные вопросы