2016-10-06 3 views
0

Ищет ключи от того, как это решить.Angularjs json data

Получил документ json с тремя объектами, содержащими массивы данных. Просмотр их как:

<tr data-ng-repeat="x in data.Country 
         | filter:{Continent:ContinentValue} 
         | filter:{GovernmentForm:govForm} 
         | filter:{Name:countName} 
         | orderBy:orderProperty" 
         data-ng-if="x.Population >= popValueMax && x.Population <= popValueMin"> 
     <td><a href="#/{{ x.Code }}">{{x.Name }}</td> 
     <td>{{x.Population}}</td> 
     <td>{{x.LifeExpectancy}}</td> 
     <td>{{x.GovernmentForm }}</td> 
     <td>{{x.HeadOfState }}</td> 
    </tr> 
</table> 

Кроме того, используя их в другой точке зрения:

<ul > 
<li>Local name: {{x.LocalName}}</li> 
<li>Continent: {{x.Continent}}</li> 
<li>Region: {{x.Region}}</li> 
<li>Surface area: {{x.SurfaceArea}}</li> 
<li>Population: {{x.Population}}</li> 
<li>Gross National Product(GNP): {{x.GNP}}</li> 
<li>Government form: {{x.GovernmentForm}}</li> 
<li>Head of state: {{x.HeadOfState}}</li> 
<li>Capital: {{}}</li> 
<li>Official language: {{}}</li> 
<li>{{}}</li> 

Во второй, капитал представляет собой число в объект А, который является X, а название столицы в объект B, где количество капитала из А это идентификатор города в объекте B.

Используя это, чтобы получить данные между HTML документы:

controllers.controller("details", ["$scope", "$routeParams", "$filter", 
function($scope, $routeParams, $filter) { 

$scope.x = $filter("filter")($scope.data.Country, 
{Code: $routeParams.CodeId})[0]; 
}]); 

Любые идеи о том, как получить имя (строку) от объекта B до <li>Capital: {{}}</li?

+0

FYI - пробы, не связанный с вашей проблемой, но ваш ng- если в вашем первом примере кода выглядит подозрительно. Вероятно, вы либо хотите использовать '||', а не '&&', или переменные' popValueMax' и 'popValueMin'. Ваш код: 'data-ng-if =" x.Population> = popValueMax && x.Population <= popValueMin ">' –

+0

Вы можете включить объект B json? –

+0

Вы можете доставить массив json? – sioesi

ответ

0

Предполагая, что объект B выглядит как

[{id:1, name:'One'}, {id:2, name:'Two'}] 

вы можете отфильтровать объект в вас выражения, а затем взять имя первого фильтрованного объекта.

<li>Capital: {{(objectB|filter:{id: x.Capital})[0].name}}</li> 

Если есть больше свойств на objectB, которые вы должны использовать, вы можете установить отфильтрованное свойство переменного и использовать его

<li>Capital: {{(capitalObj = (objectB|filter:{id: x.Capital})[0]).name}}</li> 
<li>Other Prop: {{capitalObj.other}}</li> 
+0

Не работает, спасибо. – Znowman

+0

что не работает? –

+0

Не удалось получить данные с фильтром. – Znowman