问题标签 [angularjs-factory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angularjs - AngularJS:何时使用服务而不是工厂
请在这里忍受我。我知道还有其他答案,例如: AngularJS: Service vs provider vs factory
但是我仍然无法弄清楚您何时使用工厂服务。
据我所知,工厂通常用于创建可以被多个控制器调用的“通用”函数:创建通用控制器函数
Angular 文档似乎更喜欢工厂而不是服务。他们甚至在使用工厂时提到“服务”,这更加令人困惑!http://docs.angularjs.org/guide/dev_guide.services.creating_services
那么什么时候会使用服务呢?
是否有一些事情只有通过服务才能实现或更容易完成?
幕后有什么不同吗?性能/内存差异?
这是一个例子。除了声明的方法之外,它们似乎相同,我不知道为什么我会做一个与另一个。http://jsfiddle.net/uEpkE/
更新:从托马斯的回答看来,服务是为了更简单的逻辑而工厂是为了更复杂的逻辑和私有方法,所以我更新了下面的小提琴代码,似乎两者都能够支持私有函数?
javascript - 从 WebSql 获取 AngularJs 中的数据
我正在开发 android 应用程序AngularJs
,JQuery Mobile
使用JQM-AngularJS Adapter
和用于服务器端,我JayData
用来生成DataBase
然后哑数据WebSql
。现在我想在运行时从webSql
我的数据中获取数据,DropDowns
但它无法初始化DropDowns
这里是我生成的 mu 代码
下拉代码
Angular 和 JayData 代码
我需要运行时数据,所以我应该怎么做?
angularjs - $location.path 在使用 AngularJS 的工厂中不会改变
我的工厂看起来像:
它吐出日志,但不会更改路径。我能做些什么来实现这一点?
angularjs - 如何使用来自使用 Angular.js 和 ui-router 的工厂的参数导航到子状态?
我正在尝试使用工厂提供的参数让角度 ui-router 导航到子状态,该参数在开始时具有默认参数,以便在整个应用程序中保留参数。
我希望默认主页和该链接在初始加载时转到工厂提供的默认动物,然后用户可以在从工厂保留的列表中选择动物时更新动物和参数,所以当他们导航回动物页面,它现在是他们选择的动物,具有所有动物参数而不是默认值。这样,如果他们说兽医页面,兽医页面可以检查所有选择的动物参数,当他们返回动物页面时,无论他们点击后退按钮还是动物链接,都是选择的动物。请原谅愚蠢的比喻。
应用程序.js:
动物.js
zoo.js——工厂
zoo.js——控制器
zoo.animals.animal.html
现在是否我使用这个 index.html
我得到一个“无法导航到抽象状态” - 很好。但是如果我尝试这个 index.html
然后它只是去
没有得到提供的animalId。或者,如果我离开它并返回它就消失了。我希望我想要完成的事情是有意义的。
编辑:更近一步!如果我将 index.html 链接更改为
和 app.js when 属性为:
然后它确实导航到
或者
如果选择了 wolf,无论是使用后退箭头还是其他页面的 Animals 链接。或者如果刷新它会转到默认的动物(绵羊)页面。但现在如果你在
页面并单击它转到的动物链接
(还有另一个奇怪的情况,即数据已加载并在工厂中,但在从选择列表中选择之前不会显示。)
angularjs - AngularJS:为什么我的工厂总是在我的控制器中未定义?
我的工厂在我的控制器中未定义,我不知道为什么。我创建了一个简单的例子来说明。
我在这里创建应用程序:
在这个虚拟示例中,我想建立一个做一些简单事情的工厂,显示一个警告框。我将展示两种方法(一种有效,一种无效)。
工厂一:
工厂 2:
请注意,工厂 1 的返回类型是一个函数,而工厂 2 的返回类型是一个具有属性的对象(它是函数类型)。
现在看看我想如何在我的控制器中使用这两个工厂:
这就是问题暴露的地方。在执行过程中,我收到警告框提示NewFactory1("1");
,但在执行过程中失败,NewFactory2.showMessage("2");
因为 NewFactory2 未定义(TypeError:无法调用未定义的方法'showMessage')。
你能帮我找出问题吗?我希望能够使用像 NewFactory2 这样的工厂,因为我希望工厂能够做的不仅仅是一件事(即具有多个单一功能)。顺便说一句,我使用的是 Angular 1.2.1 版。
unit-testing - how to mock the backend for angularjs app?
I would like to test a factory method that runs $resource. My test would mock the real backend that does not exist yet.
Here is a sample factory code:
My test would be to check that query was made.
If I initialize my app with:
and open the app in my browser, then everything seems to be fine, I have the dummy data in the browser.
But, when I take out the run code above, and write a test, things just don't work.
fails.
javascript - 如何在Angular JS中将obj转换为字符串
我试图找到工厂退货的剩余部分。即使 obj 返回一个数字,我也会不断得到 null 。有没有办法将返回值转换为真实数字?
使用路由提供者设置模块
接收日期 (mm/dd/yyyy) 字符串并根据 JSON 日历对其进行解析的工厂
接收 obj 返回的控制器。temp 返回 1 但 temp%2 返回 Null。
angularjs - 如何从angularjs中选择的ng-change调用服务方法?
我是角度 js 的新手。我正在尝试从 select 的 ng-change 调用工厂服务方法“getScoreData”,但无法完成。请帮忙。
html代码:
Angularjs 代码:
以上是服务工厂方法及其从控制器的实例化。我尝试从 select 的 ng-change 实例化,但它既没有给出错误也没有被调用。
javascript - 如何使用 angularjs 中的字符串从工厂内部调用函数
我有一些逻辑想包装到 AngularJS 工厂中,这样我就可以使用 Angular 的依赖注入。由于逻辑是动态的,我不一定知道可以提前调用什么。我所拥有的是一个字符串,表示要调用的函数的名称。我知道我可以做一些事情,比如window["someFunctionName"]()
用字符串运行一个函数,但是由于所有东西都包含在一个工厂中,所以我不确定如何引用工厂来调用它。前任。 sampleFactory["someFuncitonName"]();
我发现运行该功能的唯一方法是使用eval("someFuncitonName()")
. 显然,如果可以的话,我想避免使用 eval 。
这是我正在尝试做的一个例子:
在控制器中,用户将运行类似这样的东西testFactory.funcRunner("foo");
。
有没有办法按照这些思路做点什么testFactory[functionName]();
?有没有更好的方法来做到这一点?谢谢你的帮助。
更新: 由于注释中的代码是用户定义的,我无法知道,也无法控制注释中的代码是如何编写的。我不想对用户施加任何限制。因此,我可以期待的很少。
angularjs - AngularJS:如果使用http获取数据,我将如何从工厂返回值
我有这个工厂的角度:
这是我的控制器:
现在您可能已经猜到了,我在控制器中的数据(我在其中调用 getTransactions 方法)不会在成功时更新。我将如何进行这项工作?