2014-07-02 56 views
9

我想在我的Angular应用程序中混合Polymer Web组件,但我无法获得双向数据绑定这些框架之间的工作。我已经观看了this video,并且已经尝试了this question中提供的解决方案,但它仍然不适用于我。这是我的尝试:框架组件(核心元素/纸张元素)的聚合物角度双向数据绑定

  • Object属性值

    <game-card game="{{game}}" bind-polymer></game-card> - 基于post-card.html聚合物教程。 game是ID,标题等

    我创建的Web组件上的gameChanged功能,并在game变量添加了一个新的属性,像this.game.foo = 'bar';的对象,但如果我不

    <pre><code>{{game | json}}</code></pre>

    紧跟在组件后面,字符串化对象中没有"foo": "bar"。即使

    publish: { game: {reflect: true} }

    这是行不通的。

  • 框架组件

    <core-input value="{{cool}}" bind-polymer></core-input> <paper-input value="{{cool}}" bind-polymer></paper-input>

    如果我编辑元件的源代码reflectvalue属性(上core-input.html,纸输入延伸它)它仅适用。我认为这不是解决这个问题的好方法。

我错过了什么吗?有没有很好的资源可以寻找这种角聚合物集成?在Google上搜索带来的关于the material的更多结果要比关于图书馆本身的结果多得多,其中大部分结果都是“Polymer for Dart”资源。

+0

是的。很确定核心输入的值属性需要设置为'reflect:true'才能工作(https://github.com/Polymer/core-input/blob/master/core-input.html#L161) 。否则,该属性将不会更新,并且Angular的数据绑定系统将永远不会看到更改。也许提出一个错误? https://github.com/Polymer/core-input/issues/new – ebidel

+0

@edibel我有类似的问题,即使设置了“reflect:true”,它有时也不起作用。 – ipaul

+1

@ebidel - 我会尽快提交一个错误,谢谢你的回应。但是'Object'类型属性呢?它是不是应该添加新的属性呢,甚至更多地用'reflect:true'? 我遇到的另一个问题是,当我将'game'变量传递给属性时,有时我的web组件会收到一个js对象,有时它会收到一个JSON字符串,迫使我将其设为'JSON.parse'。 – danguilherme

回答

1

尝试与NG聚合物元素lib它解决角和聚合物(核心和纸元素)和一些其他东西的角度/聚合物打破的数据绑定,它也有文档添加自己的定制聚合物元素到角度绑定支持

NG Polymer Elements

+0

这似乎是一个很好的库,将尽快尝试,看看它是否解决了问题(即使我不再使用聚合物)。 – danguilherme

+0

如果你不打算再做聚合物....我真的明白为什么(它的痛苦发展),这是一个非常好的选择,几乎每一个简单的引导聚合物美容方式:) [链接](http ://fezvrasta.github.io/bootstrap-material-design/) – Strife86