gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:40:32 25 4
gpt4 key购买 nike

我正在解决在两个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com