2015-04-02 2 views
1

Хорошо, здесь вы идете, ребята.Как заказать элементы в INIT в AngularJS

Я учусь Угловая и задаюсь вопросом, как заказать элементы (массив строк). Я знаю, что есть разные способы использования контроллера и т. Д., Но я только начинаю изучать его с сегодняшнего дня.

Удивительно, есть ли способ заказать по именам? Я знаю, что orderBy может применяться к имени свойства в массиве объектов, если у нас есть, но поместив его в ng-repeat.

Но как достичь этого в моем коде ниже?

EDIT: Мне нужен заказ как при первоначальном отображении при загрузке страницы, так и когда пользователь вводит что-то в текстовое поле при его фильтрации.

<html data-ng-app=""> 
<head> 
    <title></title> 
</head> 
<body data-ng-init="names=['Sita','Ram', 'Amit','Cat','Boushick' ] "> 
    <input type="text" name="txtName" data-ng-model="typedName" /> 
    <br /> 
    Typed Name is: {{ typedName }} 
    <br /> 
    Names: 
    <ul |orderBy:'names' > 
     <li data-ng-repeat="personName in names | filter:typedName "> {{ personName | uppercase}} 

     </li> 
    </ul> 
    <script src="Scripts/angular.min.js"></script> 
</body> 
</html> 
+0

Вы используете 'ng-Init' неправильно. https://docs.angularjs.org/api/ng/directive/ngInit#!/. как указано в угловой документации, используйте вместо этого контроллер и отсортируйте массив там. – Claies

+0

@Claies: Извините, что это была моя первая работа, чтобы сослаться на это, а затем на googling, но ни один из них не удовлетворил мой сценарий. Я хочу, чтобы это было так, как я спросил. – Learner

+1

Тот факт, что вы хотите его заказать при загрузке страницы, не изменяет тот факт, что вы используете 'ng-Init' неправильно. 'ng-Init' ** не является ** директивой инициализации страницы, несмотря на ее имя. в угловой документации четко указано: «Единственное соответствующее использование ngInit - это для наложения специальных свойств ngRepeat, как показано в демонстрации ниже. Кроме этого случая, вы должны использовать контроллеры вместо ngInit для инициализации значений в области.», ** в красном**. Если у вас возникли проблемы с заказом данных после их инициализации в контроллере, спросите еще раз. :) – Claies

ответ

2

Используйте orderBy:'toString()' перед фильтром :)

<li data-ng-repeat="personName in names | orderBy:'toString()'|filter:typedName "> {{ personName | uppercase}} 

Вот Plunker

+1

Привет, работал как обаяние для обоих сценариев (начальная загрузка, а также фильтр). Поразительно :) Большое спасибо, и мне понравилось так, как вы улыбались и объясняли :) :) Думаю, вы, должно быть, очень опытный опытный парень, который так смирен и добр? (Не знаю, один из моих клиентов был таким, русский парень :)) Вернемся к сути, я попробовал это, используя фильтр, он тоже работал. Любая разница? – Learner

+1

Простите, дорогая, я всего лишь 21.Но я люблю отвечать с большой улыбкой :) И нет никакой разницы в применении его до или после. :) – squiroid

+1

Прекрасное спасибо. Невероятно, ты вдохновляешь меня. Я 30 :(Черт, новичок в программировании. Надеюсь, я учусь со временем. – Learner

3

да использовать orderBy, как,

<li data-ng-repeat="personName in names | orderBy:personName | filter:typedName "> ... 

вот Demo Plunker

+1

проверить плункер и сравнить с вашим, я только что добавил '| orderBy: personName' часть только –

+0

K. Toress, мне очень жаль, он действительно работал сейчас. Я пытался использовать «», как в видео. Это не сработало. Когда я удалил это «», это сработало. Я имею в виду, что я использовал orderBy: «personName», где он не работал. Большое вам спасибо за ваше время, жаль снова за то, что вы глупы. – Learner

+1

ok no prob, рад помочь u :) –

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