gpt4 book ai didi

javascript - AngularJS $scope 在函数外部无法访问

转载 作者:行者123 更新时间:2023-11-28 07:33:44 25 4
gpt4 key购买 nike

我编写了以下代码来从输入字段获取值并保存它。我定义了一个全局变量并将输出放入其中以在 app.factory 中使用。问题是“x”只能在“更新函数”内部可读,而在其外部的任何地方都未定义。我该如何解决这个问题?

var app = angular.module('bomApp', ['bomGraph']);

app.controller('bomController', ['$scope', 'appService', '$rootScope', function ($scope, appService, $rootScope) {

var get = function () {
appService.get().then(function (promise) {

$scope.graph = {

options: {
"hierarchicalLayout": {
"direction": "UD"

},
"edges": {
"style":"arrow-center",
"color":"#c1c1c1"
},
"nodes": {
"shape":"oval",
"color":"#ccc"

}
},

data: {
nodes: promise.nodes,
edges: promise.edges
}
};


});

};

$scope.newNode = {
id: undefined,
label: undefined,
level: undefined,
parent: undefined,

};

$scope.arrNode = {};
$scope.update = function (nodes) {
$scope.arrNode = angular.copy(nodes);
$rootScope.x = angular.copy(nodes);


};



$scope.newEdge = {
id: undefined,
from: undefined,
to: undefined

};

$scope.arrEdge = {};
$scope.updateE = function (edges) {
$scope.arrEdge = angular.copy(edges);

};


get();


}]);



app.factory('appService', ['$q', '$http', '$rootScope', function ($q, $http, $rootScope) {
console.log($rootScope.x);
return {
get: function (method, url) {
var deferred = $q.defer();
$http.get('data.json')
.success(function (response) {
deferred.resolve(response);

})
return deferred.promise;

},


};

}]);

最佳答案

var x; 仅在 Controller 本地。无法在工厂中访问。

大多数情况下,如果您想在 Controller 之间共享数据,您会将其存储在服务中。在 Controller 中共享声明全局变量也是一种不好的做法

在您的情况下,实际上正在创建一个闭包,并且x是一个私有(private)变量。它只能在 Controller 内访问。

如果您想访问服务中的变量x,则使用$rootScope

示例:

app.controller('bomController', ['$scope', 'appService',  '$rootScope',function ($scope, appService,$rootScope) {

$scope.update = function (nodes) {
$scope.arrNode = angular.copy(nodes);
$rootScope.x = angular.copy(nodes);
};
});

为您服务:

app.factory('appService', ['$q', '$http', '$rootScope', function ($q, $http, $rootScope) {
// you will have access to $rootScope.x
});

关于javascript - AngularJS $scope 在函数外部无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28828626/

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