2015-06-15 40 views
1

polymer 0.5,this.templateInstance.model提供了一種訪問在包含is="auto-binding"(或任何其他)this模板的範圍中定義的屬性的方式。在Polymer 1.0中的templateInstance.model

現在,在聚合物1.0中訪問包含is="dom-bind"(或任何其他)模板的屬性的等效方式是什麼?

編輯:

例如,在兩個元件<my-el-a><my-el-b>下面的代碼段打算分別將值設置爲包圍<template is="dom-bind">counterAcounterB性質。

<my-el-b>通過反光屬性counternotify:true)成功。

<my-el-a>打算通過「父母」/ templateInstance.model但這樣做失敗。這個用於在Polymer 0.5中工作。我如何才能在Polymer 1.0中工作?換句話說,templateInstance.model的等價物是什麼?

<script> 
 
    ! function() { 
 
    var counterA = 0; 
 
    Polymer({ 
 
     is: 'my-el-a', 
 
     ready: function() { 
 
     counterA += 1; 
 
     this.instanceTemplate.model.counterA = counterA; //used to work in Polymer 0.5 
 
     } 
 
    }) 
 
    }(); 
 
</script> 
 

 
<script> 
 
    ! function() { 
 
    var counterB = 0; 
 
    Polymer({ 
 
     is: 'my-el-b', 
 
     properties: { 
 
     counter: { 
 
      value: 0, 
 
      type: Number, 
 
      notify: true 
 
     } 
 
     }, 
 
     ready: function() { 
 
     counterB += 1; 
 
     this.counter = counterB; 
 
     console.log(this); 
 
     } 
 
    }) 
 
    }(); 
 
</script> 
 

 
<template is="dom-bind"> 
 
    <div>CounterA: <span>{{counterA}}</span> 
 
    </div> 
 
    <div>CounterB: <span>{{counterB}}</span> 
 
    </div> 
 
    <my-el-a></my-el-a> 
 
    <my-el-b counter="{{counterB}}"></my-el-b> 
 
</template>

回答

3

它沒有證明,但顯而易見的source code,我可以訪問dataHost定義爲模板實例屬性:

var dataHost = (this.dataHost && this.dataHost._rootDataHost) || this.dataHost; 

在這個問題給出的例子的情況下,我可以代替:

this.instanceTemplate.model.counterA = counterA; 

有:

var dataHost = (this.dataHost && this.dataHost._rootDataHost) || this.dataHost; 
dataHost.counterA = counterA; 

鄰其他字,templateInstance.model被替換爲dataHost

+0

剛纔我發現'dataHost',它完全適合我的需求。什麼是人們使用這種無證的功能的想法,這可能有風險嗎? – nverba

0

<template is="dom-bind">上下文中定義的屬性可直接模板元素本身。

你所要求的是一種反模式,你應該使用綁定系統。

如果更清楚爲什麼你想避免綁定系統,也許會出現另一個答案。

Fwiw,不能保證在0.5中工作的東西在1.0中具有模擬值。數據系統完全被取代。

+0

如何訪問'是= DOM-bind'的屬性從孩子聚合物元件內? –

+0

你需要更具體。如何從另一個元素訪問一個元素取決於樹中每個元素的位置。此外,只要有可能,使用綁定而不是獲取節點引用。例如:''...現在將paper-spinner.active綁定到模板。積極的,我從來沒有得到一個參考模板。 –

+0

謝謝@Scott。我編輯/擴展了我的問題。 –

0

參見:

https://www.polymer-project.org/1.0/docs/devguide/templates.html#handling-events

雖然這不是從文檔清晰,我相信event.model可以被添加到從dom-bind內發射,以及事件。但是,modelForElement,itemForElementindexForElement方法僅在dom-repeat上可用。

我以前只在模板中繼器上使用過這些功能,但如果您在自動綁定模板上使用它們的好用例,則可能需要打開功能請求。

+1

謝謝@DocDue。儘管我的參考文獻涉及到事件,但我關於'templateInstance'的問題更加一般,正如在我添加的示例中。 –

相關問題