具有存储访问权限的模型的类方法
Class methods for models with access to store
我已经和这个问题斗争了一段时间。
在我的Ember应用程序(使用Ember-cli)中,我有一个模型,我想为它附加一些类方法。
我希望能够从我的控制器Model.allWithIssues调用,以查找所有已注册问题的模型实例。
为了实现这一点,我添加了一个使用以下代码的方法:
Model.reopenClass({
allWithIssues: function () { ... }
})
我的问题是,我无法从模型内部访问数据存储。
我尝试了很多不同的方式来注入商店:主要是为了模型,但没有成功。这里的一个答案甚至声称没有办法注入到模型中,而其他人则提出了在根本不起作用的模型中实现DI的方法。
我的做法完全错了吗?我应该把这个逻辑放在一个单独的类中吗?
编辑:
我想到的解决方案是:
制作一个包含此方法的通用控制器,并让所有需要此方法的控制器对其进行扩展
中的某种混合
制作一个"存储库"类,作为控制器和存储之间的抽象层。
我仍然不确定哪条路线是最好的,但对于这样简单的事情来说,所有这些似乎都太稳健了。
控制器也不是合适的位置,除非您加载了所有模型,并且您所做的是一个计算属性。
路由器中的模型挂钩将是一个更好的地方,它将承担适配器的职责,以loa数据、反序列化数据,并为您提供模型实例。
或者,您可以创建一个位于/lib文件夹中的服务,将其注册到CI,并将存储注入其中。这取决于您的用例。
相关文章:
- 使构造函数参数具有ES6类方法的特权
- 可以“;超级“;可以在子类的方法内部使用,在不直接引用的情况下调用相应的超类方法
- Javascript中的类方法
- 在 Array.map() 中调用类方法
- 从类方法中的 ajax post 函数回调函数更改 javascript 类属性
- 为 getter 提供默认值,而不会在 Angular 2 模型类中导致堆栈溢出
- 类方法中的上下文作为变量
- 如何将类方法设置为等于多个函数?-Javascript
- 将类方法绑定到类外绑定的事件处理程序内的AJAX成功回调
- Node.JS:类方法作为回调
- 如何从将在html页面中使用的java脚本中调用java类方法
- 在类方法中使用React.js静态
- 在不使用@syntax的情况下修饰ES6类方法
- 如何使用jQuery通过ajax调用php类方法,但不需要任何php处理程序文件
- 从常规ES6类方法中调用静态方法
- crypto-js如何隐藏类方法
- 当使用Q/promises/异步函数时,如何将一个值从一个类方法返回到另一个类
- 使用javascript创建自己的隐藏类方法
- Coffeescrapt+Express.js:将req.session传递给模型类的有效方法
- 具有存储访问权限的模型的类方法