我正在尝试创建自己的可观察服务,但在从服务获取初始数据后,对服务的任何更新都不会传播给任何订阅者.服务看起来像这样:
import { Injectable } from '@angular/core';
import { Observable, BehaviorSubject } from 'rxjs/Rx';
@Injectable()
export class DataService {
keys : number[] = [4,5,1,3,2];
private data :BehaviorSubject<number[]> = new BehaviorSubject(this.keys);
constructor() {};
public setKey(i:number, val:number) :void {
this.keys[i]=val;
this.data.next(this.keys);
}
public getData() :Observable<number[]> {
return new Observable(fn => this.data.subscribe(fn));
}
public getKeys() :number[] {
return this.keys;
}
}
Run Code Online (Sandbox Code Playgroud)
使用该服务的组件获得初始数据就好了.该组件在构造函数中获取其数据:
constructor(public dataService: DataService) {
dataService.getData().subscribe(data => {
console.log("Gotcha!");
this.data.datasets[0].data = data)
});
};
Run Code Online (Sandbox Code Playgroud)
这给了控制台日志中的一个Gotcha.但是在用其他地方的setKey(2,3)更新数据后,我期待着这个.data.next(this.keys); 向所有订户发送数据,并相应地在该组件内更新数据.但没有数据发送给订阅者..
我以为我想出了Observables,但如果我在这里错过了点,请不要友好;)任何正确方向的指针将不胜感激!
我有一个 NodeJS/Express 应用程序,正在使用 Morgan 进行日志记录:
var morgan = require ("morgan");
var app = express();
app.use(morgan(':date[iso] :remote-addr :method :url :status :res[content-length] - :response-time ms'));
但在我的日志文件(从“npm start”重定向)中,我发现这样的行:
2014-12-21T10:02:59.365Z 127.0.0.1 GET / 304 - - 2.389 ms
显示 127.0.0.1 作为所有请求的远程地址。在加载index.html后,我确实使用了Angular的$routeProvider,但即使/请求也返回127.0.0.1。
app.get('/partials/:name', routes.partials);
app.get('*', function (req, res) {
res.setHeader('Content-type', 'text/html');
res.charset = 'UTF-8';
res.sendFile(__dirname + '/pub/index.html');
});
我错过了什么吗?实际的请求者不应该记录在这里吗?