国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解JavaScript的Polymer框架中的通知交互

2019-11-20 11:57:58
字體:
供稿:網(wǎng)友

Polymer 以訪問器屬性的形式來定義有監(jiān)聽需求的屬性(沒有監(jiān)聽需求的屬性依然是普通的屬性形式定義)。模板中還可以采用「::」語法來將屬性雙向同步于目標元素的某個事件,這就是 Angular 中雙向綁定的概念,甚至還要比它更純粹、更貼近原理。
  在 properties 中定義的屬性如果沒有添加 notify 并且沒在模板中用到,那么它就是沒有監(jiān)聽需求的,于是就會被定義成普通屬性。否則都會被定義成訪問器屬性,下面例子就解釋了這個問題
運行

<script> var Polymer = { dom: 'shadow' }; </script><base  /><link rel="import" href="polymer/polymer.html" /><dom-module id="demo-test"> <template>  <h1>[[z]]</h1> </template> <script>  Polymer({   is: 'demo-test',   properties: {    x: { value: 'x' },    y: { value: 'y', notify: true }   },   ready: function() {    console.log(Object.getOwnPropertyDescriptor(this, 'x'));    console.log(Object.getOwnPropertyDescriptor(this.__proto__, 'y'));    console.log(Object.getOwnPropertyDescriptor(this.__proto__, 'z'));   }  }); </script></dom-module><demo-test></demo-test>

  設(shè)置了 notify 為 true 的屬性在其發(fā)生變化時會產(chǎn)生一個「屬性名-changed」事件。注意屬性名和 changed 中間用橫桿鏈接,并且 changed 是過去時態(tài),而不是 change 原形。Polymer 可以使用 listeners 來添加事件監(jiān)聽,但不能直接綁定到函數(shù)上,而必須綁定到某個屬性名上(我不明白為什么要這么設(shè)計)。
運行

<script> var Polymer = { dom: 'shadow' }; </script><base  /><link rel="import" href="polymer/polymer.html" /><dom-module id="demo-test"> <template>  <h1>[[i]]</h1> </template> <script>  Polymer({   is: 'demo-test',   properties: {    i: { value: 0, notify: true }   },   ready: function() {    setInterval(function(that) {     that.i++;     }, 100, this);   },   listeners: {    'i-changed': 'iChangeHandler'   },   iChangeHandler: function(event) {    console.log(event.detail.value);   }  }); </script></dom-module><demo-test></demo-test>

  事件可以在模板中使用「::」語>法來捕獲,而且這些事件包括了上面產(chǎn)生的通知事件和用戶主動觸發(fā)的交互事件。
運行

<script> var Polymer = { dom: 'shadow' }; </script><base  /><link rel="import" href="polymer/polymer.html" /<dom-module id="demo-test"> <template>  <input value="{{text::input}}" /><hr/>  <textarea value="{{css::input}}"></textarea><hr/>  <h1 style$="[[css]]">[[text]]</h1> </template> <script>  Polymer({ is: 'demo-test' }); </script></dom-module><demo-test></demo-test>

2015729120757886.png (856×498)

 注意上面是 style$="[css]" 而不是直接的 style="css",因為此處是賦值給元素的 attribute 上,而不是純粹的 property 賦值。所以在等號前面加一個「$」(其實我覺得這個語法看起來非常奇怪)。
  以上這些就是我所知道的 Polymer 中所有關(guān)于數(shù)據(jù)綁定的內(nèi)容了。也許有遺漏,可能會在其它文章中補充。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 静宁县| 云龙县| 福清市| 周宁县| 民丰县| 周口市| 延寿县| 新津县| 临桂县| 田阳县| 隆尧县| 和政县| 读书| 峡江县| 股票| 湖北省| 庆安县| 习水县| 汨罗市| 阿拉善盟| 阿城市| 东乌珠穆沁旗| 吐鲁番市| 赤城县| 平潭县| 礼泉县| 拉孜县| 黄山市| 云南省| 江山市| 大关县| 察雅县| 莎车县| 斗六市| 武隆县| 射阳县| 尉氏县| 丹江口市| 钦州市| 湟源县| 东乌珠穆沁旗|