2016-05-16 2 views
0

Я просто начинающий в angularjs, и я создаю приложение, я уже сделал вывод правильно, но я хочу достичь его, не используя jQuery, я хочу сделать это с помощью метода angularjs, используя "ng-repeat".Как правильно применять Angularjs ng-repeat?

Следующий код, что находится внутри моего контроллера:

.controller('SomeListCtrl',function(SomeFromService, $scope, $stateParams, $http){ 

var encodedString = 'action=' + 
     encodeURIComponent("getSomething") + 
     '&count=' + 
     encodeURIComponent("10") + 
     '&page=' + 
     encodeURIComponent("1"); 

$http({ 
    method: 'POST', 
    url: 'http://service.something/site.aspx', 
    data: encodedString, 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
}) 
.success(function(data){ 
    $scope.myData = data; 
}) 
.error(function(data, status){ 
    console.log(status); 
}) 
}) 

И это в моем HTML, где мне нужно, чтобы передать его:

<ion-view view-title="Latest News"> 
    <ion-content> 
    <ion-list> 
     <ion-item class="item-remove-animate item-avatar item-icon-right" ng-repeat="data as myData" type="item-text-wrap" href="#/tab/myLink/{{data.id}}"> 
     <img ng-src="http://the-v.net{{data.ImageLink}}"> 
     <h2>{{data.localTitle}}</h2> 
     <i class="icon ion-chevron-right icon-accessory"></i> 
     </ion-item> 
    </ion-list> 
    </ion-content> 
</ion-view> 

P.S. Данные, возвращаемые вызовом ajax, - json. который сконструирован таким образом

[{ 
"id": "5f6e8bac-197f-4ae3-8535-6d892a101d17", 
"localTitle": "Public" 
}] 
+1

Это * полностью * неправильный подход. Вы должны избегать хранения HTML в переменных при использовании углового, когда это возможно, и вместо этого разрешить угловое управление вашим DOM. – Claies

+0

да вот почему я поставил вопрос о том, как это сделать в угловой js way :) –

+1

Я ** очень ** рекомендую прочитать прочитанный http://stackoverflow.com/questions/14994391/thinking-in-angularjs-if -i-have-a-jquery-background – Claies

ответ

3

Контроллеры AngularJS призваны не использовать/создавать элементы HTML непосредственно в их коде. Вы используете представление/HTML для отображения значений, возвращаемых ответом AJAX.

Контроллер

... 
$scope.values = []; 

... 
.success(function (response,status, headers, config){ 
    // put the response values in a scope object 
    $scope.values = response; 
}) 
... 

Посмотреть

<!-- render the values using ng-repeat --> 
<div ng-repeat="value in values"> 
    {{value.localTitle}} 
</div> 

Ссылки

+0

да вот почему я хочу изменить это по-угловому пути .. я попробую это первым СПАСИБО! –

+0

эй стало намного более запутанным после вашего редактирования -_- –

+0

теперь у меня появилось больше вопросов -_-, для чего нужен индекс $? и что, если localTitle будет больше 1. –

1

https://docs.angularjs.org/api/ng/directive/ngRepeat

просто объявить данные JSon контроллер с объемом затем использовать его на ваш взгляд

controller.js

$scope.myObj = 'http response here'; 

view.html

<table> 
    <tr ng-repeat="data as myObj"> 
    <td>{{data.localTitle}}</td> 
    </tr> 
</table> 
+0

Я попробую это сделать –

+0

Я отредактировал вопрос .. но я получаю сообщение об ошибке, я применил свой ответ к своему коду .. но я не знаю, сделал ли я что-то неправильно или это ваш код? –

+0

aahh .. он должен быть ng-repeat = "data in myObj", но так много спасибо за помощь! –