什么';在polymer.dart中,@可观察的和@published的区别是什么?

什么';在polymer.dart中,@可观察的和@published的区别是什么?,dart,dart-polymer,Dart,Dart Polymer,在polymer.dart中,如果要将控制器中定义的变量公开到视图侧,可以使用@observable定义变量,并使用双胡子嵌入变量。但是,有些文档和教程使用@published来达到相同的目的。官方文档也使用了这两种方法,所以我不认为@published是传统的、不推荐使用的定义变量的方法 那么这两者之间有什么区别吗?我应该在我的代码中使用哪一个?@published-是双向绑定(模型到视图和视图到模型) 如果模型属性也是标记中的属性,@published的用例是 示例:对于希望从外部源提供数据

在polymer.dart中,如果要将控制器中定义的变量公开到视图侧,可以使用
@observable
定义变量,并使用双胡子嵌入变量。但是,有些文档和教程使用
@published
来达到相同的目的。官方文档也使用了这两种方法,所以我不认为
@published
是传统的、不推荐使用的定义变量的方法


那么这两者之间有什么区别吗?我应该在我的代码中使用哪一个?

@published-是双向绑定(模型到视图和视图到模型)

如果模型属性也是标记中的属性,@published的用例是

示例:对于希望从外部源提供数据的表元素,您将定义属性数据,在本例中,数据属性应为@published

<polymer-element name = "table-element" attributes ="structure data">
     <template>
         <table class="ui table segment" id="table_element">
             <tr>
                 <th template repeat="{{col in cols}}">
                     {{col}}
                 </th>
             </tr>
             <tr template repeat="{{row in data}}">
              etc......
     </template>
<script type="application/dart" src="table_element.dart"></script>
</polymer-element>


@CustomTag("table-element")
class Table extends PolymerElement {

 @published  List<Map<String,String>>  structure; // table struture column name and value factory
 @published List<dynamic> data; // table data

{{col}}
等
@CustomTag(“表元素”)
类表扩展了关系{
@已发布的列表结构;//表结构列名和值工厂
@已发布的列表数据;//表数据
@observable-是单向绑定-(模型到视图)

如果您只想将数据从模型传递到视图,请使用@observable

示例:要使用上面的表元素,我必须提供数据,在这种情况下,数据和结构将在我的表测试dart代码中可见

<polymer-element name = "table-test">
 <template>
     <search-box data ="{{data}}" ></search-box>
     <table-element structure ="{{structure}}" data = "{{data}}" ></table-element>
 </template>
<script type="application/dart" src="table_test.dart"></script>
</polymer-element>

省道码

CustomTag("table-test")
class Test extends PolymerElement {

  @observable List<People> data = toObservable([new People("chandra","<a href=\"http://google.com\"  target=\"_blank\"> kode</a>"), new People("ravi","kiran"),new People("justin","mat")]);
  @observable List<Map<String,String>> structure = [{ "columnName" : "First Name", "fieldName" : "fname"},
                                                     {"columnName" : "Last Name", "fieldName" : "lname","cellFactory" :"html"}];
  Test.created():super.created();
CustomTag(“表测试”)
类测试扩展了关联性{
@可观察列表数据=可观察([新人(“钱德拉”)、新人(“拉维”、“基兰”)、新人(“贾斯汀”、“马特”));
@可观察列表结构=[{“columnName”:“FirstName”,“fieldName”:“fname”},
{“columnName”:“Last Name”,“fieldName”:“lname”,“cellFactory”:“html”}];
Test.created():super.created();

示例取自

谢谢。那么什么时候使用@published?即使我只使用单向连接,我也可以使用@observable来实现,对吗?这是一个糟糕的约定还是失去了一些性能?感谢您的精彩澄清。我刚刚发现我在我的第一篇文章中误解了
@published
@observable
请不要在这里发表评论…对不起。嗨,这里:在“关键信息”列中,第3点写着“@observable”是双向绑定的。请澄清一下这一点。基本上,
@observable
使被观察的项目是双向绑定的(因此,如果您在双moutch场景中使用它,则更改为项目的输入将反映在输入中,并反映在项目上的输入中的更改。
@published
是相同的,但最重要的是,它公开了要用作元素用户属性的项目。至少我了解到了这一点。。。