gpt4 book ai didi

dart - polymer.dart 中的@observable 和@published 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 03:15:40 25 4
gpt4 key购买 nike

在polymer.dart 中,如果要将 Controller 中定义的变量公开给 View 端,请使用@observable 定义变量。并使用双 mustache 嵌入变量。但是,一些文档和教程使用 @published达到同样的目的。官方文档也同时使用两者,所以我不认为 @published是定义变量的遗留和弃用方式。

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

最佳答案

@published - 是双向绑定(bind)(模型到 View 和 View 到模型)

@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

@observable - 是一种绑定(bind)方式 - (模型查看)

如果您只想将数据从模型传递到 View ,请使用 @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>

Dart 代码
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();

示例取自 My Repo

关于dart - polymer.dart 中的@observable 和@published 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23599378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com