2016-11-29 257 views
2

如果我有以下dom-repeat模板:計算屬性

<template is="dom-repeat" items="{{myFiles}}" as="file"> 
    <span> 
    {{file.createDate}} <br/> 
    </span> 
</template> 

,我想格式化file.createDate,有沒有使用computed property做到這一點的方法嗎?

回答

3

沒有,你就需要在項目(或在這種情況下,其子屬性)使用computed binding

// template 
<template is="dom-repeat" items="{{_myFiles}}" as="file"> 
    <span>{{_formatDate(file.createDate)}}</span> 
</template> 

// script 
Polymer({ 
    _formatDate: function(createDate) { 
    return /* format createDate */; 
    } 
}); 

或者,你可以使用一個計算的屬性(如命名爲_myFiles)在myFiles陣列,這將處理dom-repeat迭代之前的所有項目:

// template 
<template is="dom-repeat" items="{{_myFiles}}" as="file"> 
    <span>[[file.createDate]]</span> 
</template> 

// script 
Polymer({ 
    properties: { 
    myFiles: Array, 
    _myFiles: { 
     computed: '_preprocessFiles(myFiles)' 
    } 
    }, 
    _preprocessFiles: function(files) { 
    return files.map(x => { 
     x.createDate = /* format x.createDate */; 
     return x; 
    }); 
    } 
}); 
+0

我不得不定義我的計算性能爲這樣: MYFILES:{ type:Array, computed:'_preprocessFiles(myFiles)', notify:true } –