2014-10-07 19 views
1

考慮這種聚合物片段:獲取與核心項目元素關聯的模型的最佳方法?

<core-menu on-core-activate="{{selectUser}}"> 
    <template repeat="{{user in users}}"> 
    <core-item label="{{user.name}}"></core-item> 
    </template> 
</core-menu> 

當用戶點擊一個core-item元素並觸發selectUser,我怎麼確定哪些用戶與活化core-item關聯?我想爲實際對象獲取實例,而不是用於查找對象的一些字符串標識符。

回答

1

聚合物> = 1.0.0

@reflectable 
void someClickHandler(dom.Event event, [_]) { 
    // for native events (like on-click) 
    var model = new DomRepeatModel.fromEvent(event); 
    // or for custom events (like on-tap, works also for native events) 
    var model = new DomRepeatModel.fromEvent(convertToJs(event)); 
    var value = model.jsElement['items']; 
    // or 
    var value = model.jsElement[$['mylist'].attributes['as']]; 
    // if you used the `as="somename"` 
    // in your <core-list> or <template is="dom-repeat"> 
} 

有關於自定義事件的懸而未決的問題:https://github.com/dart-lang/polymer-dart/issues/624

聚合物< = 0.16.0

單擊處理程序

import 'package:template_binding/template_binding.dart' as tb; 

... 

void onClick(MouseEvent e) { 
    tb.TemplateInstance ti = tb.nodeBind(e.target).templateInstance; 
    var value = ti.model.value as Inner; 
} 

有關更多詳細信息,請參見In Polymer.js children of a template have a reference to the template, how can this be done in Polymer.dart

+0

看起來很尷尬的男人。有沒有其他的方法? :/ – ALW 2014-10-07 05:47:11

+0

不要這樣想。你可以將它減少到一行(沒有導入)。有些事情並不是在飛鏢中比在JS中那麼簡單... – 2014-10-07 05:49:40

+0

我想這真的是唯一的方法......非常薄弱,但它現在會做。 – ALW 2014-10-07 23:54:15

相關問題