@Neversmille

Как решить проблему со значениями по умолчанию в select angular?

Всем привет. Начал изучать angular и столкнулся с проблемой.

У меня в scope есть 2 обьекта:
1)
tasks:
    12:
        id: 12
        user_id: 1
и т.д.

2)
users:
    1:
        id: 1
        username:  sergey


Пытаюсь вывести select:
<select class="form-control"
    data-ng-model="tasks[task.id].user_id"
    data-ng-change="setWorker(task.id)"
>
    <option data-ng-repeat="user in users" data-ng-value="user.id" data-ng-selected="{[{user.id == task.user_id}]}">{[{user.username}]}</option>
</select>


Но возникает 2 проблемы:
1) В select по дефолту на данном примере не проставляется sergey
2) В select добавляется option вида:
<option value="? number:4 ?"></option>

Изначально грешил на то, что при загрузке данных от сервера в $scope.users и $scope.tasks помимо данных попадал promise, но я избавился от этого делая после получения данных:
$scope.users = data.toJSON();

Также есть еще 3 проблема:
После обновления данных о задаче и успешного выполнения ajax запроса на сервере, например смене user_id я изменяю данные в scope:
$scope.tasks[taksId].user_id = userId;
И хотелось бы чтобы при изменении $scope.tasks выполнялась моя функция $scope.test();
Добавил watcher на tasks:
$scope.$watch('tasks', function () {
    $scope.test();
 })

Но эффекта нет. Помогите пожалуйста решить эти проблемы. Может у кого есть какие варианты?
  • Вопрос задан
  • 462 просмотра
Пригласить эксперта
Ответы на вопрос 1
Видимо должно быть так?
2. из-за того. что users не массив, а объект.
3. для массивов нужно использовать $watchCollection
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы