在这种情况下,我需要在angularjs中手动管理范围吗?

时间:2018-11-12 12:21:17

标签: javascript angularjs single-page-application

我正在(重新)学习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)中删除收藏夹,则范围不会受到影响,因此收藏夹不会从UI的显示表中删除。我还必须从$scope中删除这些收藏夹。那是对的吗?还有其他方法可以将作用域变量和数据库上的操作连接起来吗,或者我是否必须手动完成此操作?

0 个答案:

没有答案