什么是之间的差异Service,Provider并Factory在AngularJS?
dependency-injection angularjs angularjs-service angularjs-factory angularjs-provider
我正在尝试从我的Webstorm应用程序向我的后端应用程序发送请求,这两个应用程序都位于不同的端口,我正在使用前端的angularJS和后端的java.我已经阅读了一些关于CORS过滤器的内容,并且我了解到为了执行跨源请求,我需要实现这些.然而,在做完这个我的错误后,正在
Failed to load resource: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63343' is therefore not allowed access. http://localhost:8080/register?password=&username=
XMLHttpRequest cannot load http://localhost:8080/register?password=&username=. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63343' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)
没有改变导致我相信我做错了什么,这是我发送请求的代码:
var charmanderServices = angular.module('charmanderServices', ['ngResource']);
var hostAdress = "http://localhost:8080";
charmanderServices.factory("register", ["$resource",
function($resource){
console.log('in service');
return $resource(hostAdress + "/register", {}, {
'registerUser' : { method: 'POST', isArray: false,
params: {
username: '@username',
password: '@password'
}
},
headers : …Run Code Online (Sandbox Code Playgroud) 到目前为止,我一直在开发我的客户端应用程序,而不使用我自己的服务器在其后面运行,使用Webstorm的内置Web服务器来提供我的内容.
当人们使用Node with Express作为他们的网络服务器时,我经常看到的是关于你是否应该将你的html文件与节点或客户端代码放在一起的争论.
我理解html或css中包含的javascript文件最好存储在客户端目录中?
所以我的第一个问题是,像这样的文件夹结构
app/
client/ js files
server/ node files
Run Code Online (Sandbox Code Playgroud)
您是否应该在服务器或客户端目录中包含html页面?
其次:
有时我看到人们使用express.static静态文件,这里的静态文件究竟是什么?今天大多数网站不再是静态文档,而是通过操纵DOM来改变javascript的文件,所以我不认为任何html文件应该被视为静态文件?
据我所知,使用Node而不是内置Web服务器的唯一优势是,如果我想拥有数据库访问权限.
尝试在javascript中尝试一些怪癖:
首先,我做了
console.log("5" + 1);
Run Code Online (Sandbox Code Playgroud)
这打印51,这是正常的,数字和字符串都有+运算符,但由于字符串是第一个变量,它将1转换为字符串.
现在,当我这样做时:
console.log(1 + "5")
Run Code Online (Sandbox Code Playgroud)
我预计输出为6,因为我认为它会将字符串转换为数字.然而,魔术输出是15.
任何更有经验的javascript都可以让我感到满意吗?
所以我应该使用Java将EBCDIC文件转换为ASCII.到目前为止,我有这个代码:
public class Migration {
InputStreamReader reader;
StringBuilder builder;
public Migration(){
try {
reader = new InputStreamReader(new FileInputStream("C:\\TI3\\Legacy Systemen\\Week 3\\Oefening 3\\inputfile.dat"),
java.nio.charset.Charset.forName("ibm500") );
} catch(FileNotFoundException e){
e.printStackTrace();
}
builder = new StringBuilder();
}
public void read() throws IOException {
int theInt;
while((theInt = reader.read()) != -1){
char theChar = (char) theInt;
builder.append(theChar);
}
reader.close();
}
@Override
public String toString(){
return builder.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
文件描述如下:
02 KDGEX.
05 B1-LENGTH PIC S9(04) USAGE IS COMP.
05 B1-CODE PIC S9(04) USAGE IS COMP. …Run Code Online (Sandbox Code Playgroud) 我知道ES6解决了thisES5中关键字存在的许多问题,例如箭头函数和类.
我的问题涉及this在ES6类的上下文中的使用以及为什么必须明确地编写它.我最初是一名Java开发人员,我来自一个以下几行代码非常自然的世界.
class Person {
private String myName;
public Person() {
myName = "Heisenberg";
}
public void sayMyName() {
System.out.println("My name is " + myName);
}
}
Run Code Online (Sandbox Code Playgroud)
编译器将始终引用该字段的值myName,除非它具有myName在方法范围内定义的名称的局部变量.
但是,一旦我们将此代码转换为ES6:
class Person {
constructor() {
this.myName = "Heisenberg";
}
sayMyName() {
console.log(`My name is ${myName}`);
}
}
Run Code Online (Sandbox Code Playgroud)
这将无法正常工作,它会抛出一个Uncaught ReferenceError: myName is not defined.解决这个问题的唯一方法是抛出一个明确的this引用:
console.log(`My name is ${this.myName}`)
Run Code Online (Sandbox Code Playgroud)
我理解this在构造函数中需要,因为ES6类不允许在构造函数之外定义你的字段,但我不明白为什么Javascript引擎不能(或不会,因为标准)做与Java编译器一样可以sayMyName
是否可以在没有PHP代码的情况下使用angularjs连接MySql数据库?基于客户端脚本,我们无法连接MySql db.是否有其他连接方式?
我正在创建一个 AWS Cloudformation 堆栈,在其中将记录集添加到现有的 Route53 托管区域。资源指定如下(YAML格式):
DNS:
Type: AWS::Route53::RecordSetGroup
Properties:
HostedZoneName: !Ref HostedZoneName
Comment: Zone apex alias targeted to myELB LoadBalancer.
RecordSets:
- Name: !Join [ ".", ["alb", !Ref HostedZoneName]]
Type: A
AliasTarget:
HostedZoneId: !Ref AliasTargetHostedZoneId
DNSName: !Ref AliasTargetDNSName
Run Code Online (Sandbox Code Playgroud)
HostedZoneName,AliasTargetHostedZoneId并AliasTargetDNSName作为参数传入。
我遇到的问题是由于标题中指定的权限错误,堆栈不会创建。默认情况下,CloudFormation 将使用创建堆栈的用户的权限,我。我有管理员访问策略,所以我应该被允许做所有的事情,包括所有的 Route53 操作。
我还尝试通过传递一个 IAM 角色来创建堆栈,该角色也具有 AdministratorAccess 策略,这给了我同样的错误。
模板中指定的所有其他资源(VPC、Loadbalancer、RDS 等)都可以正常创建。
所以我想执行2次http调用以从我的服务器获取一些组和问题,并在routeprovider中解决这两个问题,以便在获得相关数据之前不会加载相应的控制器.
在我的其他控制器中,我总是使用initalData对象来保存数据.
解决部分:
resolve: {
initialData: ["GroupsService" "QuestionsService", function (GroupsService, QuestionsService) {
return {
questions: QuestionsService.getAll(),
groups: GroupsService.getAll()
}]
}
Run Code Online (Sandbox Code Playgroud)
当我尝试分别使用initialData.questions和initialData.groups访问控制器中的数据时,我收到了2个promises而不是数据,即使在实例化控制器之前已经记录了来自http的回调.
QuestionsCtrl.$inect = ["DialogsService", "initialData", "QuestionsService"];
function QuestionsCtrl(DialogsService, questions, groups, QuestionsService) {
//Initialdata object which has 2 Promise properties
//This logs AFTER the callback in both http callbacks
console.log('controller initialized', initialData);
Run Code Online (Sandbox Code Playgroud)
当我用这个替换代码时(没有使用initialData对象,而是返回另外两个对象,它确实有效:
resolve: {
questions: function (QuestionsService) {
//$http call for all questions
return QuestionsService.getAll();
},
groups: function (GroupsService) {
//$http call for all groups
return GroupsService.getAll();
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人有任何合理的解释为什么,在第一种情况下,我得到了承诺(尽管数据实际上存在于客户端),第二种工作完美无瑕?
我正在使用Custom TG2480-H打印机打印收据.除了徽标外,我已收到所有收据.
我有一个.bmp代表徽标的单色文件,并且具有正确的尺寸.
我正在使用不同的响应类型检索文件:
this.http.get('/assets/images/brand/logo-bnw.bmp', {
responseType: ResponseContentType.Blob
}).subscribe((response: Response) => {
console.log('Blob bytes', this.kiowarePrintService.getBytesFromText(response.text()));
});
this.http.get('/assets/images/brand/logo-bnw.bmp', {
responseType: ResponseContentType.Text
}).subscribe((response: Response) => {
console.log('Text bytes', this.kiowarePrintService.getBytesFromText(response.text()));
});
this.http.get('/assets/images/brand/logo-bnw.bmp', {
responseType: ResponseContentType.ArrayBuffer
}).subscribe((response: Response) => {
console.log('ArrayBuffer bytes', this.kiowarePrintService.getBytesFromText(response.text()));
});
Run Code Online (Sandbox Code Playgroud)
这是关于ResponseContentType的文档以及它可以具有的不同值.
这是以下代码getBytesFromText:
getBytesFromText(text: string) {
const bytes: number[] = [];
for (let i = 0; i < text.length; i++) {
bytes.push(text.charCodeAt(i));
}
return bytes;
}
Run Code Online (Sandbox Code Playgroud)
将响应转换为字节会打印以下值:
Blob bytes (2) [123, 125]
Text bytes (951) …Run Code Online (Sandbox Code Playgroud) angularjs ×4
java ×3
javascript ×3
addition ×1
amazon-iam ×1
angular ×1
ascii ×1
bitmap ×1
bytebuffer ×1
cobol ×1
cors ×1
ebcdic ×1
ecmascript-6 ×1
firebase ×1
html ×1
inputstream ×1
mysql ×1
node.js ×1
numbers ×1
printing ×1
promise ×1
string ×1
this ×1
tomcat ×1
typescript ×1