gpt4 book ai didi

javascript - 在 AngularJS 中 Controller 和工厂之间共享 $scope

转载 作者:行者123 更新时间:2023-12-01 02:29:57 25 4
gpt4 key购买 nike

我有一个变量"file",它被传递给我在同一 Controller 中使用的指令。现在我想在我正在创建的工厂中使用相同的"file",但我不确定是否有一种简单的方法可以在 Controller 和工厂之间共享相同的变量。

例如...

fileCategory.directive.js:

.directive('fileCategory', function () {
return {
templateUrl: '...'
restrict: 'EA',
replace: true,
scope: {
file: '='
},
controller: 'fileCategoryController'
};
});

fileCategory.controller.js:

.controller('fileCategoryController', function($scope) {

if(!$scope.file) {
return;
} else {
console.log($scope.file);
}

fileCategory.factory.js

.factory('fileCategoryList', function () {

categories.get = function() {
if($scope.file){
return this.categories;
} else{
return;
}
};

我希望能够像这样在我的工厂中使用 $scope.file...

最佳答案

此处可以使用 $rootScope,但请不要在这种情况下使用它。更好的做法是使用服务来存储数据,并在不同组件之间进行操作。当您的应用程序不断增长时,在全局 $rootScope 中存储更多数据可能会出现问题。

.service('CategoryService', function () {
this.file = ...
}

然后向 Controller 、工厂或您需要的任何地方实现服务

.controller('fileCategoryController', function($scope, CategoryService ) {
$scope.file = CategoryService.file

if(!CategoryService.file) {
return;
} else {
console.log($scope.file);
}

关于javascript - 在 AngularJS 中 Controller 和工厂之间共享 $scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48385270/

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