javascript - 将 Angular 物体绑定(bind)到 Polymer 1.0

标签 javascript html angularjs data-binding polymer-1.0

我有一个自定义元素:

<my-element options='{{myOptions}}'></my-element>

像这样,Web 组件中的 ready 回调仅接收 options 属性的 {{myOptions}} 。我尝试了一些工具,但没有任何效果。

然后我读了here您可以执行一个回调,该回调将在属性更改后触发(attributeChangedCallback),因此我做了一些修改,推迟了就绪回调,直到该回调上的 bool 标志设置为 true,但这是一个丑陋的修复。

此外 - 它仅适用于 Chrome。

有人可以分享将 Angular 绑定(bind)到 Polymer 的最佳跨浏览器解决方案吗?

最佳答案

<my-element options='{{myOptions}}'></my-element>绑定(bind)myOptions stringyfied,用于对象绑定(bind)使用

<my-element [options]='myOptions'></my-element>

为了让 Polymer 了解 myOptions 属性的后续更改您可以延迟将值分配给 myOptions直到它完全构建在 Angular 端。如果您传递一个对象并更改该对象的属性,Angular 将无法识别它。

您还可以使用 Polymers API 显式通知 Polymer 元素有关更改

@Component({
  selector: 'angular-comp',
  template: `
<my-element #options options='{{myOptions}}'></my-element>
`
export class AngularComponent {
  @ViewChild('options') options;

  constructor() {
    this.options = {};
  }
  myOptions:any;
  // or some event handler or similar that isn't called before ngAfterViewInit (for example click, ...)
  ngAfterViewInit() { 
    this.options.someProp = "someValue";
    options.set('options.someProp', this.options.someProp);
  }
}

关于javascript - 将 Angular 物体绑定(bind)到 Polymer 1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35637599/

相关文章:

javascript - 如何在滚动时将 jQuery 阴影函数应用于具有相同类名的多个元素

javascript - 提交表单时复选框不会保持禁用状态

javascript - Angularjs:如何捕获 <td> 标记中的文本并在我的 Controller 中使用它

javascript - 缩放到 ThreeJS 中的对象

javascript - angularjs - 动态添加一个变量到每个 Controller 的范围

javascript - 使soundmanager插件声音静音

java - 从 Selenium 中的跨度获取文本

php - css javascript php div 显示/隐藏

javascript - 如何根据 Controller 中定义的数组创建 ng Repeat block

javascript - Angular ui-select css 不适用于 ui-bootstrap