【问题标题】:Binding Expression: Identifier is not defined绑定表达式:未定义标识符
【发布时间】:2020-01-18 08:36:21
【问题描述】:

我是 Angular 新手,我正在学习绑定表达式的基础知识。在尝试实现新模块时,我的 html 文件中不断出现错误,提示未定义标识符。我该如何摆脱这个错误?

"标识符'message'未定义。组件声明、模板变量声明、元素引用不包含这样的memberAngular "

我正在使用 Visual Studio Code 1.38.1 和 Angular 8.2.6;我已经尝试将脚本引用放在头部和身体的不同部分;尝试更改模块的名称,使用单引号和双引号,并修改控制器实例。消除错误的一件事是将属性放在 app.component.ts 文件中;但是,我仍然希望它成为模块,因为没有其他人遇到类似的问题。我不明白我做错了什么,而且我看到的任何教程都没有解决这个问题。

在 script.js 文件中:

<reference path="angular.min.js" />
var myApp = angular.module("module1", []);
myApp.controller("myController", function($scope){
  $scope.message = "hello from the controller";
});

在 app.component.html 文件中:

...
<body>
  <div ng-controller="module1">
    <p>{{ message }}</p>
  </div>
</body>
...

在 app.component.ts 文件中:

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'proj1';
  message = 'hello';
}

【问题讨论】:

  • 您正在混合使用 AngularJs 和 Angular (2+)。
  • 您正在将 angularjs 与 angular 混合使用。这些是完全不同的东西!请阅读文档以对 Angular 有一个基本的了解。 angular.io/tutorial
  • 谢谢你们的澄清,我没有意识到他们是不同的。

标签: javascript angular node-modules


【解决方案1】:

删除 script.js 并将 HTML 代码放入 app.component.html

<body>
  <div>
    <p>{{ message }}</p>
  </div>
</body>

您正在使用 AngularJS 策略。尝试阅读 Angular 文档并遵循它。

【讨论】:

  • 我已经参考了角度文档,并且我已经尝试将 script.js 中的代码放入 html 文件中;它仍然说没有定义标识符。
  • 你在混合 angularJS 和 Angular 它的两个不同的东西
  • 不知何故,我认为这些术语是可以互换的;谢谢。
【解决方案2】:

您将 Angular js (v 1, 1+) 与 Angular (2, 2+) 混淆了。

Angular Js 使用ng-controller 将控制器和数据绑定附加到视图。但在 Angular 中,组件用于视图,数据绑定发生在组件中,而 AppModule 或功能模块包含所有模块并将它们包含在应用程序中:

您可以使用:&lt;p&gt;{{ message }}&lt;/p&gt; 来绑定数据。

参见this link for a 基本示例

【讨论】:

    猜你喜欢
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    相关资源
    最近更新 更多