【问题标题】:Angular 2.0 migration pathAngular 2.0 迁移路径
【发布时间】:2015-11-10 23:11:21
【问题描述】:

我正在准备一个关于“今天为 Angular 2.0 做好准备”的演讲,并且我打算讨论为了使迁移路径更容易而需要更改的应用程序结构(我知道,Angular 2.0 还没有准备好,但基本概念是准备好)。

我开始了一个演示项目,以演示一个“之前”的应用程序,以简单的“旧”Angular 1.x 方式编写。然后我打算将这个应用程序的结构更改为组件树,并通过属性在组件(指令)之间进行通信(类似于 Angular 2 中的属性绑定和事件绑定。事件绑定将通过属性事件方法)。下一步将更改代码以使用 Typescript,然后最后一部分将使用实际的 Angular 2.0 编写相同的应用程序。

我的问题是 - 我有使用 ng-model 和两种方式数据绑定用 Angular 1.x 编写的 html 输入。我想尽可能地将其更改为“Angular 2 方式”——这意味着通过属性和事件与其父组件进行通信。这是我的演示项目(组件分解用破折号标记)

我能想到的唯一方法是不使用 ng-model,例如:

<input ng-keyup="ctrl.event()" value={{ctrl.value}} />

任何评论将不胜感激!!

【问题讨论】:

  • 可以分享幻灯片和代码吗?
  • 当然,我很乐意!它目前正在开发中,因此需要一些时间(:
  • 顺便说一句 - 这是我写的关于这个主题的博客文章的链接。演讲应该更详细,希望更高级(:yanivefraim.github.io/2015/05/27/…
  • 我认为这可以以某种方式帮助您。从 ng1 升级到 ng2 是他们的策略:Angular 1 to Angular 2 Upgrade Strategy

标签: javascript angularjs angular


【解决方案1】:

要使其成为最 Angular 1 的方式,最简单的方法是在 Angular 2 ng-model 中使用模板驱动的表单(请参阅here),并将其与 ng-model Angular 1 表单进行比较。除了一些模板语法更改外,它们应该看起来非常相似。在此处查看正在运行的example

如果您不想使用表单构建器 API,可以不使用 ng-model,因为它只会将模型与视图同步,反之亦然。这将是输入的 Angular 2 版本:

<input [(ng-model)]="value" (keyup)="event()">

【讨论】:

  • 这是很酷的东西,谢谢。我不确定我是否理解您关于在 Angular 1.x 中使用模板驱动表单的建议。我正在考虑实现一个单向流指令,它的作用类似于 Angular 2 的 ng-model 并将在 Angular 1.x 上工作(类似于 ng2-model 指令,它将具有传入数据的属性和传出数据的事件)。该指令将替换 ng-model 的双向数据绑定
  • (keyup)="event()" 的目的是什么?
  • 它类似于 Angular 1 中的 ng-keyup,将事件处理程序绑定到 keyup 事件
  • 那么 event() 是 [(ng-model)] 正常工作所需的 angular2 函数吗?
  • 它是控制器函数 ctrl.event() 的名称(参见问题 ng-1 模板 sn-p
猜你喜欢
  • 2015-02-11
  • 2017-12-18
  • 2013-08-21
  • 2015-09-28
  • 2021-08-30
  • 2020-04-29
  • 2018-10-22
  • 2022-07-12
  • 1970-01-01
相关资源
最近更新 更多