角-聚合物相互作用

2024-03-25

我计划尝试 AngularJS 中的一个项目,其中所有组件都将使用 Polymer 开发。在开始这个项目之前,我有几个疑问:

  1. 使用 Angular 服务获取数据后,我可以更新 Polymer 组件数据模型(也可以通过 UI)吗?如果是,那么如果可能的话请分享一个例子。

  2. 我可以调用 Angular 服务来从 Polymer 组件内部获取数据吗? (比如说,我有一个作为 Polymer 组件的用户控件,用于通过 Angular 服务针对 MongoDB 验证用户凭证)?

    如果可能的话,请分享一个例子。


此设置会出现一些复杂情况。

首先,Angular 不知道如何绑定到自定义元素,因此从 Angular 内部到 Polymer 组件的绑定如下:

<my-element foo="{{ bar }}">

将设置元素的 foo 属性,该属性只能是字符串,但不会使用 Node.bind 来设置与 foo 属性的绑定。对于绑定复杂对象,或者当您想要双向绑定时,这是一个大问题。

我创建了一个指令,允许您在 Angular 中使用 Node.bind,但它适用于 Dart。您可以将其移植到 JS:https://github.com/google/angular_node_bind.dart https://github.com/google/angular_node_bind.dart

它的工作原理是捕获双方括号中的表达式并通过 Node.bind 设置监视表达式和绑定。前面的示例将更改为:

<my-element foo="[[ bar ]]">

绑定是双向的。如果<my-element>改变 foo 的值,bar 的值也会更新。

第二个问题是依赖注入。由于浏览器负责创建自定义元素,因此 Angular 不知道它们何时创建,也没有机会注入依赖项。因此,您需要一种方法让 Polymer 元素获取 Angular 服务(或任何真正的服务对象,无论是否为 Angular)。

一旦您使用像 angular-node-bind 这样的东西,您就可以使用绑定将服务传递给元素。也许是这样的:

<my-element http-service="[[ $http ]]">

(因为我并不是真正的 Angular 专家,所以我只是尝试让 Angular 和 Polymer 一起使用,所以我不能 100% 确定 $http 只在表达式中可用)。

Angular 团队表示他们打算在 Angular 2.0 中支持自定义元素,尽管他们的最近的博客文章 http://blog.angularjs.org/2014/03/angular-20.html没有提到它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

角-聚合物相互作用 的相关文章

随机推荐