我試圖將一個角度受控元素的對象綁定到飛鏢中的聚合物元素。飛鏢中的角度和聚合物之間的對象綁定
目的結合:
class Person {
String name;
String surname;
Person(this.name, this.surname);
}
聚合物元件模板:
<link rel="import" href="packages/polymer/polymer.html">
<polymer-element name="person-element">
<template>
<style>
.label {font-weight: bold;}
</style>
<p>
<span class="label">Name: </span>{{person.name}}
<span class="label">Surname: </span>{{person.surname}}
</p>
</template>
<script type="application/dart" src="person_element.dart"></script>
</polymer-element>
聚合物元件代碼:
import 'package:polymer/polymer.dart';
import 'person.dart';
@CustomTag('person-element')
class PersonElement extends PolymerElement {
@published Person person;
PersonElement.created() : super.created();
}
在角我已經創建了一個控制器和一個模塊:
@Controller(
selector: '[person-container]',
publishAs: 'ctrl')
class PersonController {
List<Person> persons = [new Person('John','Smith'), new Person('Mario','Rossi')];
}
class PersonModule extends Module {
PersonModule() {
bind(PersonController);
}
}
的第一個解決方案使用angular_node_bind包嘗試:
<div person-container ng-cloak>
<h2>Person elements</h2>
<div ng-repeat="person in ctrl.persons">
<div>{{person.name}}</div>
<person-element person="[[person]]"></person-element>
</div>
</div>
當我運行在Dartium的應用程序,我得到這個錯誤:
Exception: type 'String' is not a subtype of type 'Person' of 'value'. (http://localhost:8080/person_element.dart:6)
我也試着以這種方式修改html代碼中的屬性實例:
<person-element person=[[person]]></person-element>
但我得到同樣的例外。
angular_node_bind包是否支持對象綁定?
的第二個解決方案是使用new binding features of Angular 0.14.0並以這種方式結合的聚合物元件:
有了這個解決方案,我沒有得到任何異常,元素的可視化,但字段爲空和person實例爲null。
完整的例子是在這裏:https://github.com/fedy2/dart-angular-polymer-object-data-binding
我試過用這種方式使用聚合物元素: person-element>獲得相同的異常。 –
Fedy2
2014-09-12 13:13:05