Angularjs 角-聚合物相互作用
我计划在AngularJS尝试一个项目,其中所有组件都将使用聚合物开发。现在在开始这个项目之前,我有两个问题:Angularjs 角-聚合物相互作用,angularjs,dart,dart-polymer,polymer,angular-dart,Angularjs,Dart,Dart Polymer,Polymer,Angular Dart,我计划在AngularJS尝试一个项目,其中所有组件都将使用聚合物开发。现在在开始这个项目之前,我有两个问题: 在使用Angular services获取数据后,我是否可以更新聚合物组件数据模型(也可以通过UI进行更新)?如果是,那么如果可能的话,分享一个例子 我可以调用Angular services从聚合物组件内部获取数据吗?(比如说,我有一个用户控件作为聚合物组件,用于通过Angular Services针对MongoDB验证用户凭证) 如果可能,请分享一个例子 这个设置会有一些复杂的问题
这个设置会有一些复杂的问题 第一个是Angular不知道如何绑定到自定义元素,因此Angular内部绑定到聚合物组件,如:
将设置元素的foo属性,该属性只能是字符串,但不会使用Node.bind设置到foo属性的绑定。这对于绑定复杂对象或需要双向绑定时是一个大问题
我创建了一个指令,允许您从Angular中使用Node.bind,但它是用于Dart的。您可以将其移植到JS:
它的工作原理是捕获双方括号中的表达式,并通过Node.bind设置监视表达式和绑定。前面的示例将更改为:
绑定是双向的。如果
更改了foo的值,则bar的值将被更新
第二个问题是依赖注入。由于浏览器负责创建自定义元素,Angular不知道它们是何时创建的,也没有机会注入依赖项。所以你需要一种方法让聚合元素获得一个有角度的服务(或者任何服务对象,不管是否有角度)
一旦使用了angular node bind之类的东西,就可以使用绑定将服务传递给元素。也许是这样:
(因为我不是一个真正的角度专家,我只是尝试让Angular和Polymer一起使用,我不是100%确定$http只在表达式中可用)
Angular团队表示,他们打算在Angular 2.0中支持自定义元素,尽管他们的团队没有提到这一点。聚合物元素只是常规元素。如果对它们设置属性,调用方法,并侦听它们的事件,那么将它们与其他框架或库一起使用应该不会有任何复杂的问题。这完全是出于设计
交叉结合角元素和聚合物元素可能很诱人,但这是先进的,并不是严格必要的。我绝对不建议这样开始。嗯。。。感谢Justin从架构的角度讲是有意义的——尽管需要弄清楚实现级别的细节:)我认为需要在聚合物层(读取阴影DOM)和浏览器之间架起一座桥梁,其他框架可以监听到这座桥梁。简单地说,Polymer对象需要将事件(至少是本机事件)冒泡到浏览器级别,这将由JS框架订阅。