如何允许组件中的函数访问构造函数中导入的工厂?

Posted

技术标签:

【中文标题】如何允许组件中的函数访问构造函数中导入的工厂?【英文标题】:How to allow a function in a component to access factory imported in constructor? 【发布时间】:2017-06-08 12:54:47 【问题描述】:

我一直在尝试在组件之间共享数据,并按照here 的建议创建了一个商店。

在我的组件构造函数中一切正常,但我不知道如何为函数提供类似的访问权限。

class Home 
  constructor($scope, $reactive, Store) 
    'ngInject';

    $reactive(this).attach($scope);

    this.selectedDate = Store.get().selectedDate;

一切正常,但无法访问此处的商店:

nextDay()
    'ngInject';
    Store.set(selectedDate: moment(this.selectedDate).add(1, 'd').format('YYYY-MM-DD'));
    console.log('nextDay');

我已经尝试将 Store 附加到 $reactive,我已经尝试过 this.Store 并将 Store 作为 agrument 传递给 nextDay() 但无法弄清楚。任何帮助将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

你应该在类上分配服务(注入的东西)

例如,如果您想使用 Store 分配 this.Store = Store 然后你可以从类中的所有方法中使用它作为this.Store

  class Home 
      constructor($scope, $reactive, Store) 
        'ngInject';
        this.Store = Store;
        this.$reactive = $reactive;
        this.$scope = $scope;
        this.$reactive(this).attach($scope);

        this.selectedDate = this.Store.get().selectedDate;
      

      nextDay()
        this.Store.set(selectedDate: moment(this.selectedDate).add(1, 'd').format('YYYY-MM-DD'));
        console.log('nextDay');

      
  

【讨论】:

谢谢,我以为会很简单!

以上是关于如何允许组件中的函数访问构造函数中导入的工厂?的主要内容,如果未能解决你的问题,请参考以下文章

不可变类/对象、私有构造函数、工厂方法

如何使用具有构造函数参数的 TypeScript 类定义 AngularJS 工厂

Dart 工厂构造函数 - 它与“const”构造函数有何不同

覆盖在命名空间中导入的函数

使用受保护构造函数和复制构造函数创建 C++ 非堆工厂对象

通过其他类构造函数在主方法中创建对象时访问对象属性