Угловая синхронизация та же директива?

0

Я строю своего рода социальную сеть, где у меня есть угловая директива, которая нажимает дальше, будет следовать за человеком. Рядом с сообщением появится следующая кнопка. Так что, если персонаж 3 раза, кнопка будет повторяться 3 раза. Но когда я нажимаю на одну следующую кнопку, другие 2 не показывают тот же результат. они остаются прежними.

Итак, вопрос в том, как я могу синхронизировать другие 2 кнопки?

Вот как работает мой код. Это сообщение пользователя, у него есть кнопка внизу справа Изображение 174551

И это когда я нажимаю на сообщение, у него будет модальное всплывающее окно, показывающее более подробную информацию о сообщении, как когда вы нажимаете на изображение в facebook.

Изображение 174551

Тогда проблема в том, что когда я нажимаю пальцем вверх в модальном всплывающем меню, он не синхронизируется с большим пальцем в исходном Изображение 174551

Это код для голосования

VoteButtons.link = function (scope, ele, att) {
var post_id = att.voteButtons;
scope.up_vote_class = 'default';
scope.down_vote_class = 'default';
scope.up_votes_number = 0;
scope.down_votes_number = 0;
scope.post_id = post_id
var up_votes_id = [];
var down_votes_id = [];
if (post_id) {
  $http.get('/api/posts/get-votes/' + post_id).success(function (res) {
    if (res && !res.error) {
      up_votes_id = res.response.up_votes;
      down_votes_id = res.response.down_votes;
      if (up_votes_id) {
        scope.up_votes_number = up_votes_id.length;
      }

      if (down_votes_id) {
        scope.down_votes_number = -down_votes_id.length;
      }

      if ($rootScope.user && up_votes_id && up_votes_id.indexOf($rootScope.user._id) != -1) {
        scope.up_vote_class = 'success';
      }

      if ($rootScope.user && down_votes_id && down_votes_id.indexOf($rootScope.user._id) != -1) {
        scope.down_vote_class = 'danger';
      }

    }
  })

  scope.thumb_up = function () {
    $http.post('/api/posts/up-vote/' + post_id).success(function (res) {
      if (res && !res.error) {
        up_votes_id = res.response.up_votes;
        down_votes_id = res.response.down_votes;
        if (up_votes_id) {
          scope.up_votes_number = up_votes_id.length;
        }

        if (down_votes_id) {
          scope.down_votes_number = -down_votes_id.length;
        }

        if ($rootScope.user && up_votes_id && up_votes_id.indexOf($rootScope.user._id) != -1) {
          scope.up_vote_class = 'success';
          Socket.emit('thumb_up',res.response)
        } else {
          scope.up_vote_class = 'default';
        }

        if ($rootScope.user && down_votes_id && down_votes_id.indexOf($rootScope.user._id) != -1) {
          scope.down_vote_class = 'danger';
        } else {
          scope.down_vote_class = 'default';
        }

      } else {
        $rootScope.alerts = res.error.message;
      }
    })
  }

  scope.thumb_down = function () {
    $http.post('/api/posts/down-vote/' + post_id).success(function (res) {
      if (res && !res.error) {
        up_votes_id = res.response.up_votes;
        down_votes_id = res.response.down_votes;
        if (up_votes_id) {
          scope.up_votes_number = up_votes_id.length;
        }

        if (down_votes_id) {
          scope.down_votes_number = -down_votes_id.length;
        }

        if ($rootScope.user && up_votes_id && up_votes_id.indexOf($rootScope.user._id) != -1) {
          scope.up_vote_class = 'success';
        } else {
          scope.up_vote_class = 'default';
        }

        if ($rootScope.user && down_votes_id && down_votes_id.indexOf($rootScope.user._id) != -1) {
          scope.down_vote_class = 'danger';
        } else {
          scope.down_vote_class = 'default';
        }
      } else {
        $rootScope.alerts = res.error.message;
      }
    })
  }
}
}
  • 0
    Я не уверен, что этот вопрос уместен здесь, но хорошо ... Каждый профиль должен иметь список подписчиков, когда вы нажимаете «следовать», обновляете этот список с новым именем / идентификатором, используйте этот объект области действия для управления директивой , Ваш вопрос не имеет кода или специфики, как и мой ответ.
  • 0
    Пожалуйста, предоставьте свой код и будьте более конкретны, какое поведение / результат вы ожидаете при нажатии кнопки.
Теги:
angularjs-directive

1 ответ

1
Лучший ответ

Чтобы сообщить об изменениях ко всем другим экземплярам директивы, вы можете использовать стиль pub/sub. Это можно сделать, если транслировать событие с помощью $rootScope.$broadcast который, возможно, передает iD новой вещи.

Затем событие может быть прослушано всеми вашими директивами и после обратного вызова проверить, связана ли директива с этой вещью. Если это так, обновите состояние кнопки.

Трудно объяснить, но я надеюсь, что вы поймете логику моего подхода.

И, надеюсь, это поможет вам!

Ещё вопросы

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