如何:在JavaScript对象中声明的Angular Factory方法
HOW TO: Angular Factory method declared in a JavaScript object?
我有一些类似的代码:
(function() {
'use strict';
angular.module('outApp.core')
.factory('socket', socketDataService);
function socketDataService() {
var service = {
openSocket: openSocket,
closeSocket: closeSocket,
getUpdates: getUpdates,
sendUpdates: sendUpdates,
};
return service;
function openSocket() {
var contextPath = document.location.href.split('/#')[0];
var sock = new SockJS(contextPath + '/api/cart');
var stompClient = Stomp.over(sock);
stompClient.connect({}, function(frame) {
console.log('Connected ' + frame);
stompClient.subscribe("/app/cart", {}, { customerId: "4654654", cartId: "54654" });
});
}
还有其他命名函数,如开头名为service
的JS对象中所示,但为了简洁起见,我将它们排除在外。
我正试图使用一个工厂构造函数来授予对service
对象中提到的函数的访问权限,该构造函数应该是可注入的,因此可以在我们的整个应用程序中访问。
我有两个问题:这是定义和返回方法的正确方式吗?
我知道我可以定义:
var service.method = function () {
//do stuff
}
var service.anothermethod = function () {
// do other stuff
}
return service;
但为了清晰、可读和风格,我们选择了这样做。我已经看到另一个开发人员用第一种方式做了这件事,但我不清楚发生了什么
下一个问题:如何在函数中访问并测试这些方法?我在工厂结束时设置了一个debugger
,但我看不到控制台中的方法。
谢谢!
这样做:
function foo() {
bar();
function bar () {
[...]
}
}
基本上和这样做是一样的:
function foo() {
var bar = function () {
[...]
};
bar();
}
函数只是一种对象类型,您可以将其作为参数分配给其他函数等。不要将其视为Java中的方法。
你提到的两种方式都很好。尽管在第二种方式中没有"var":
service.method = function () {
//do stuff
};
您只需要设置对象的属性,就像使用int:一样
service.foo = 42;
除此之外,我不确定你在问什么。
相关文章:
- 如何在angular factory中定义ngModel
- Jhon Papa Angular Style guide Factory-对象内部的函数未运行
- 如何:在JavaScript对象中声明的Angular Factory方法
- Angular JS控制器和Factory在单独的文件中
- Angular Factory:实现getAll函数以使用REST-Api
- ASP.NET MVC&Angular:会话到期后,Angular Factory返回登录页面的HTML,而不是
- 如何使用Jasmine测试Angular Factory对象
- 如何从模块设置中调用angular factory方法
- angular.factory不是一个函数
- Angular-当Factory数据发生更改时更新范围
- 每次更改路由时都会调用Angular factory ajax
- 在两个控制器中共享的Angular JS Factory不会更新值
- 如何将ng-model / $scope与Angular Factory和Controller一起使用
- Angular Factory returns null
- Angular - factory应该从第三方回调中返回值
- Angular factory:在上传过程中使用进度更新作用域
- 创建一个承诺,使用angular factory从firebase访问多个数据点
- typescript + angular: factory with dependencies error
- 未定义的获取.Angular Factory;Ionic框架错误
- 使用 Angular Factory 保存一个值,以便应用程序的其余部分访问,以最大程度地减少服务器调用