我已经使用JavaScript一段时间了,但最近不得不使用Angular(v7(。我遇到了这样一种情况:我在快速会话中设置了会话值,并且该值非常动态。我无法在我的视图中实时显示此值。
这是我关于SO的第一个问题,我知道我可能很模糊,但如果你认为你能帮助我,请告诉我。如果需要,我可以详细说明。
我在我的组件中创建了一个 Observale 变量,并且有一个服务来调用快速控制器,而快速控制器又调用读取和返回会话值的快速模型。
现在此调用仅发生一次,但我希望此调用在更改时自动返回会话值。
app.component.html
<button *ngIf="sessionValue$ | async as sval">
{{sval.status}}
</button>
app.component.ts
this.sessionValue$: Observable<any>;
ngOnChanges(change) {
this.intialise();
this.sessionValue$ = this.sessionService.get();
}
会话服务.ts
url = environment.appUrl + 'session';
get(): Observable<any> {
return this.http.get<any>(this.url + '/status');
}
express.session.controller.js
exports.status = function (req, res) {
try {
sessioModel.get(req.session, function (result) {
res.status(200).send(result);
});
} catch (error) {
logger.error(error);
}
}
express.session.model.js
exports.get= function (session, handleResponse) {
var sessionValue= session['variableMe'];
const retVal= sessionValue['nowValue'];
if (!retVal) {
handleResponse({ status: "" });
} else {
handleResponse({ status: retVal });
}
};
我希望每次会话变量更改其值时,html 页面上的值都会更改。
我建议使用套接字,这将允许您在前端和后端之间进行实时通信,而无需每次都进行服务调用。这是一个非常好的库,其中包含有关如何设置的良好文档。
后端的设置有点棘手,因此,如果您遇到麻烦,请务必寻求帮助。