angular - 角度“未定义标识符‘todos’。”
问题描述
什么可能是这个错误的原因
“未定义标识符‘todos’。组件声明、模板变量声明、元素引用都可以
我一直在尝试在 ionic4 中运行它,将其链接到 firebase,并且在 (12,36) 和 (9,41) 的各个行上都会出现此错误。
<ion-header>
<ion-toolbar color="primary">
<ion-title>
Ionic FireStore
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ng-container *ngIf="!todos || todos.length == 0">
<div *ngFor="let n of [0,1,2]" padding>
<p>
<ion-skeleton-text class="fake-skeleton"></ion-skeleton-text>
</p>
</div>
</ng-container>
<ion-item-sliding *ngFor="let item of todos">
<ion-item lines="inset" button[routeLink]=" ['/details, item.id'] ">
<ion-label>
{{item.task}
<p>{{ item.createdAt | date:'short'}} </p>
</ion-label>
<ion-note slot="end" color="primary"> {{ item.priority }} </ion-note>
</ion-item>
<ion-item-options side="end">
<ion-icon name="checkmark" slot="end"></ion-icon>
</ion-item-options>
</ion-item-sliding>
</ion-list>
<ion-fab vertical="bottom" horizontal="end" slot="fixed">
<ion-fab-button routerLink="/details" routerDirection="forward">
<ion-icon name="add"></ion-icon>
</ion-fab-button>
</ion-fab>
</ion-content>
解决方案
'todos' 没有定义。
这是一个 Javascript 错误。它说你还没有定义变量todos。
您很可能有一个包含所描述HTML的组件。
您可以尝试以下...
...in component
todos;
constructor()...
或者
...in component
todos = [];
constructor()...
附带说明...
打开浏览器控制台并输入: todos;
你回来了:“Uncaught ReferenceError: todos is not defined”
类型:var todos;
你回来了:“未定义”
看到不同?“已定义” todos 变量的“未定义”引用了未定义的右手赋值;即它没有定义附加到已定义的todos。这有点令人困惑。
所有变量必须在使用前定义。当您在 javascript 类中定义变量时,我们省略了 var/let 并仅将其声明为
class Todo {
todos;
constructor(){}
}
声明了todos变量。左边的赋值是 todos,右边是默认的undefined,因为没有提供任何东西。undefined指向右侧,而不是左侧。在使用任何变量之前,我们必须始终提供左侧赋值。
您正在使用“!todos || todos.length == 0”
!todos 表示有一个已定义的变量 todos 具有错误的右侧赋值:false、0、""、null、NaN 或 undefined。然后您使用BANG运算符来翻转逻辑。在任何情况下,您都必须在适当的范围内定义变量todos 。
推荐阅读
- jmeter - JMeter HTTP 请求响应慢
- shell - 如何使用脚本输出作为输入参数 Linux shell 脚本
- azure - 使用 Group.Create 权限创建 Azure AD 组
- matplotlib - y 和 x 轴子图 matplotlib
- python - 从列表 python 列表创建数据框
- python - 在哪里可以找到 python 官方文档中的 **options?
- html - Excel VBA 登录网站并获取 TR 和 TD 元素
- php - 使用 laravel 使用 mysql 数据库
- html - 上 div 背景与正文背景
- java - Java - 在 JDialog / JFrame 上调用 Component#setName