javascript - 使用 $scope 访问 Angular 重用函数

标签 javascript angularjs callback code-reuse

我正在解决在两个 Controller 中通过范围访问重用相同函数的问题 在这里描述: How to include/inject functions which use $scope into a controller in angularjs?

在 Controller 中:

new CommonService($scope).getSomethingFromDB();

在工厂:

services.factory("CommonService", function (DBService) {

function Factory ($scope) {

    this.$scope = $scope;
}

Factory.prototype.getSomethingFromDB = function () {
    if( angular.isUndefined(this.$scope.vrsteObracuna) || this.$scope.vrsteObracuna === null) {

        this.$scope.loading = true;
        DBService.getSomethingFromDB(
            function success(data) {
                this.$scope.loading = false; //ERROR !!!
                this.$scope.vrsteObracuna = data;
            },
            function error(data, status, headers, config) {
                this.$scope.loading = false;
                etna.notifications.error("Error fetching!");
            }
        )
    }

    return this.$scope.vrsteObracuna;
}

return Factory;
});

问题是从 DBService.getSomethingFromDB 成功回调后 this.$scope.loading 未定义?

最佳答案

您还没有将 $scope 放入“成功”闭包中,请尝试使用此代码:

services.factory("CommonService", function (DBService) {

function Factory ($scope) {

    this.$scope = $scope;
}

Factory.prototype.getSomethingFromDB = function () {
    if( angular.isUndefined(this.$scope.vrsteObracuna) || this.$scope.vrsteObracuna === null) {

        this.$scope.loading = true;
        var that = this;
        DBService.getSomethingFromDB(
            function success(data) {
                that.$scope.loading = false; //ERROR !!!
                that.$scope.vrsteObracuna = data;
            },
            function error(data, status, headers, config) {
                that.$scope.loading = false;
                etna.notifications.error("Error fetching!");
            }
        )
    }

    return this.$scope.vrsteObracuna;
}

return Factory;
});

关于javascript - 使用 $scope 访问 Angular 重用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40906183/

相关文章:

javascript - 将 json 数据传递给 javascript 变量

javascript - 点击时添加javascript?

angularjs - 如何在AngularJS指令模板中动态定义要用ng-click调用的函数

具有 bool 值的 JavaScript 回调函数

c++ - 在C++中的本地范围内使用Lambda

javascript - 将全屏背景图像添加到循环的 Wordpress/Genesis 子主题

javascript - 如何在javascript中使用if条件来处理json?

angularjs - 在下拉列表中显示与选项文本不同的值

AngularJS $location 在散列之前获取路径

javascript - 保存 Promise 解析函数