Как предварительно установить флажок в angularJs с помощью ng-checked
Кажется, я не могу заставить это работать. Итак, у меня есть несколько жанров фильмов, и я хочу, чтобы они были проверены, являются ли они жанрами в базе данных пользователей. Это мой код
%section(ng-controller="UserCtrl" ng-init="user_genres=#{preferred_genres}")
%ul
%li(ng:repeat="genre in preferred_genres")
%input(type = "checkbox" ng:model="preferred_genres[genre]" id="genre-{{$index + 1}}" ng-checked="user_genres['{{genre}}']")
%label{:for => "genre-{{$index + 1}}"} {{genre}}
А это #{preferred_genres}
из хамла
{"Action & Adventure":true,"Animation":true,"Art House & International":true,"Classics":true,"Comedy":true,"Documentary":true,"Drama":true,"Horror":true,"Kids & Family":true,"Musical & Performing Arts":true,"Mystery & Suspense":true,"Romance":true,"Science Fiction & Fantasy":true,"Special Interest":true,"Sports & Fitness":true,"Television":true,"Western":true}
Так что это означает, что каждый флажок должен быть установлен. Но никакой флажок не установлен, когда я загружаю страницу. Однако если я жестко ng-checked
чтобы быть примерно таким, это работает.
ng-checked="user_genres['Western']"
Это действительно странно. Пожалуйста помоги.
1 ответ
Решение
Значение ng-checked
должно быть выражением. Избавьтесь от {{}}. Итак, как то так:
%input(type = "checkbox" ng-model="preferred_genres[genre]" id="genre-{{$index + 1}}" ng-checked="user_genres[genre]")
Кроме того, вам не нужно обязательно иметь ng-checked
директивы. Если значение вашей модели истинно, то оно будет проверено для вас.