Нужно ли вручную управлять областью действия в angularjs в этом случае? - PullRequest
0 голосов
/ 12 ноября 2018

Я (пере) изучаю angularjs, потому что мне нужно перенести существующий код в другую среду.

У меня есть контроллер, который отвечает за управление сохраненным списком избранного, отображаемым в таблице. Избранное сохраняется в коллекции mongodb. Это выглядит так:

export const favoritesController = ($scope, getFavorites, removeFavorites) => {
    getFavorites.then(favs => {
        $scope.favorites = favs;
    });

    // Called when a button is clicked
    // to remove selected favorites from a table.
    $scope.removeFavorite = ($event) => {
        let ids = [];
        $("#favorites input:checked").each((i, el) => {
            ids.push(parseInt(el.value));
        });
        removeFavorites(ids);

        // I know, we should ensure the
        // scope management occurs only 
        // when and if the
        // favs were successfully deleted. 
        $scope.favorites = $scope.favorites.filter(
            favorite => {
                return !ids.includes(favorite.id);
            });
   };
}

Если я просто позвоню в службу, чтобы удалить избранное из БД (removeFavorites), область действия не изменится и, следовательно, избранное не будет удалено из их таблицы отображения в пользовательском интерфейсе. Я также должен удалить эти избранное из $scope. Это верно? Есть ли какой-то другой способ соединить переменную области действия и действия с БД, или я правильно понял, что это должно быть сделано вручную?

...