2013-04-17 3 views
3

Я Перебор результирующего набора и динамически создавая модельные значения, такие как:Angularjs динамически создавать модели

 angular.forEach(users, function(user) { 
      $scope.usersModels.online[user.id] = 0; 
      $scope.usersModels.online[user.id]['checked'] = 'checked'; 
      $scope.$watch('usersModels.online[user.id]', function(val) { 
        console.log(val); 

      }); 
    }); 

Я также пытаюсь следить за изменением этих моделей и получить значение. Это не работает, однако, какие-то идеи, что не так?

Спасибо!

EDIT:

angular.forEach(users, function(user) { 
     $scope.usersModels.online[user.id] = {}; 
     $scope.usersModels.online[user.id]['value'] = 0; 
     $scope.usersModels.online[user.id]['checked'] = 'checked'; 
     $scope.$watch(function() { 
      return $scope.usersModels.online[user.id]['value']; 
     }, function(val) { 
      console.log(val); 
     }); 
}); 
+0

попробуйте удалить '' из $ watch – Ketan

+0

ИЛИ $ scope. $ Watch ('userModels.online.' + User.id, ...}); – Ketan

+0

или использовать функцию в качестве первого аргумента для $ watch. $ scope. $ Watch (function() {return $ scope.usersModels.online [user.id]},/* обработчик * /) – Artem

ответ

1

код вы предоставили не дает нам полную картину. Некоторые из недостающих частей являются:

  • Код для заполнения users объекта
  • Вид кода, который показывает, как связать входы с моделями

Следовательно, мне нужно сделать некоторые предположения :

  • Код для заполнения объекта users не является причиной проблемы.
  • Элемент, который привязывается к свойству checked, является флажком.

С предположениями в виду, одна непосредственная проблема, я нашел в своем коде, что вы присвоить строковое значение, "checked", к checked собственности, когда вы должны использовать логическое значение. Двусторонняя привязка для ввода флажка работает только с булевым значением.

Поскольку я не вижу полную картину, мне сложно сказать, что это единственная проблема с вашим кодом. Основываясь на информации, которую вы предоставили, я создал рабочий plunkr. Обратите внимание, что я просто назначил объект из трех идентификаторов пользователей для создания объекта users с предположением, сделанным выше. Сравните это с вашим кодом и определите другие возможные проблемы, если таковые имеются. Пожалуйста, не забудьте сообщить, если вы обнаружили другие ошибки в коде, так как это может принести пользу новым посетителям.

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