Обновление Div с AngularJS

0

У меня есть DIV, определяемый следующим образом:

    <button ng-repeat="message in user.messages">

    <div ng-model="message" ng-show="{{message.received && !message.read}}" class="btn bg-green"></div>
    <div ng-model="message" ng-show="{{message.received && message.read}}" class="btn bg-green" ></div>
    <div ng-model="message" ng-show="{{!message.received}}" class="btn bg-amber"></div>

В основном я меняю (показываю/скрываю) значок в зависимости от состояния сообщения (полученного, отправленного, прочитанного). Однако, когда я обновляю статус сообщения, значки не меняются, хотя я связал его с ng-model. Мне нужно обновить всю страницу, чтобы обновить значки.

Как я могу сделать это обновление через Angular?

Спасибо.

  • 0
    У вас есть код angularjs, который вы можете показать?
Теги:
data-binding
angular-ngmodel

2 ответа

1
Лучший ответ
  1. ng-show не нужно интерполировать, вы можете просто написать "message.recieved..."

  2. почему бы не использовать ng-класс следующим образом:

    div ng-class= "{'bg-green': message.recieved, 'bg-amber':! meessage.recieved}"

Не связывайте div с ng-моделью, не имеет смысла использовать двустороннюю привязку данных, когда она не является входом, и представление не может обновить модель

  • 0
    Спасибо, Коби. ngClass это путь.
1

Кажется, что вы привязываете все три элемента div к ng-модели, когда им не нужно. ng-модель должна быть привязана только к вводу, select, textarea или другому пользовательскому вводу. См. Https://docs.angularjs.org/api/ng/directive/ngModel

Использование ng-класса должно решить эту проблему без необходимости в 3 отдельных div. Это позволит вам динамически изменять класс на основе разных выражений. https://docs.angularjs.org/api/ng/directive/ngClass

<div ng-class="{'bg-green': message.received && !message.read, 'bg-amber': !message.received}"></div>
  • 0
    Спасибо, Фоффман. ngClass это исправил.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню