作者:狗狗水灵灵_266 | 来源:互联网 | 2022-12-10 14:27
1> felixmosh..:
Angular ng-if
不能是异步的,它希望以true/false
同步的方式进行.
不要忘记,每个 angular指令都会创建一个"watch",它将作为angular的脏检查机制的一部分进行调用.如果你对它进行"重"操作,它将卡在浏览器上.
基本上你的代码中有两个错误的东西,第一个,你isShow
根本没有返回布尔值(它总是返回undefined).第二个,您可能在service.getKioskLogByKioskId
方法内部进行API调用.
为了解决这两个问题,你可以在service.getKioskLogByKioskId
你的控制器的构造函数内进行调用(如果它是一个组件,那里有$onInit
生命周期钩子),然后将异步结果保存在控制器上,并使用它来查看.
看起来应该是这样的:
class MyController {
constructor(stateParams) {
this.stateParams = stateParams;
this.isShow = false; // initial value
}
$onInit() {
const self =this;
service.getKiosk([stateParams.kioskId], function (kiosk) {
self.kiosk = kiosk;
debugger
if (self.kioskLog.isConnected && self.kiosk.isActive)
self.isShow = true;
else
self.isShow = false;
});
}
}
// view.html