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

标签 javascript angularjs angularjs-scope angularjs-factory

我有一个变量"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/

相关文章:

css - 如何将侧边菜单作为 ionic 的叠加层?

javascript - 使用jquery查找父级父元素

javascript - 如何使用 ng-repeat 使用对象数组内的属性来重复行

javascript - 我的应用程序中的 Angularjs 模态窗口实现

javascript:如何将字符串数组转换为连接以逗号分隔的项目的纯字符串?

asp.net - 在 JavaScript 代码中嵌入常量服务器端标签的最佳方法是什么?

javascript - 在 angularjs 中,当 ng-options 数组发生变化时,如何刷新 `select` ?

angularjs - 隔离范围中的 $scope.$on

javascript - html表AngularJS或服务器端的过滤操作

javascript - 如何在不使用 td 中的 id 或类的情况下访问 td 的图像?