Привязка к области действия из вложенной функции разрешения

0

Я всегда сталкиваюсь с этой проблемой, когда я пытаюсь связать область видимости с вложенной функцией разрешения (.then()), потому что я хотел бы обновить представление с помощью обновленных данных из базы данных.

Однако внутри встроенного разрешения я никогда не могу привязываться к области по какой-либо причине. Это не имеет смысла для меня, поскольку он отлично работает с первого решения.

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

Разумеется, должен быть более чистый и простой способ привязки к сфере действия из вложенной функции разрешения?

Примеры вызовов api с разрешениями:

// Simple $http.get requests from my factory which gets resolved here
tagApi.delete({id: item.id}).then(function(res) {

    // Binding scope from here works
    $scope.someProp = res;

    tagApi.edit({id: res.id}).then(function(res) {

        // But not from inside here
        $scope.someProp = res;
    });
});
Теги:
angularjs-scope

2 ответа

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

вы можете попробовать следующее:

tagApi.delete({id: item.id})
.then(function(res) {

    // Binding scope from here works
    $scope.someProp = res;

    return tagApi.edit({id: res.id});
})
.then(function(result) {
  $scope.someProp = result;
})
  • 0
    Полностью забыл, что одно решение может передать данные другому решению, блестяще! Работает так хорошо :)
0

Вы можете использовать $broadcast в функции успеха tagApi.delete:

$rootScope.$broadcast('tag:deleted', res);

Затем:

$rootScope.$on('tag:deleted', editFunc);
var editFunc = function (event, res) {
  tagApi.edit({id: res.id});
};

Ещё вопросы

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