我遇到了一个和这个问题类似的问题。
然而,我的情况有点不同,我似乎不能让它工作。我已经玩了一段时间了,到目前为止还没有运气。我需要把href$="{{_getProject(item.project_id)}}"
写成"webservices/api/projects/1"
但我能得到的最接近的是它输出item.project_id
而不能和它连接所以只有1。我尝试了各种各样的东西,但下面是我最近的。有谁知道我该怎么做吗?我敢肯定这是我忽视的。
<template is="dom-bind">
<iron-ajax url="<?echo $url?>" last-response="{{data}}" auto></iron-ajax>
<iron-list items="[[data]]" as="item">
<template>
<div>
<div class="item">
<div class="pad">
<div class="primary">[[item.project_name]]</div>
<div class="secondary">Project Deadline:</div>
<div class="secondary">[[item.project_deadline]</div
<div class="secondary">Total Hours to date:</div>
<div class="secondary">[[item.project_total_hours</div>
<div class="secondary">[[item.project_id]]</div>
</div>
<a href$="{{_getProject(item.project_id)}}"><iron-icon icon="assignment"><iron-icon></a>
</div>
</div>
</template>
<script>
Polymer({
_getProject: function(url) {
return 'webservices/api/projects/' + url
}
});
</script>
</iron-list>
</template>
您在铁列表内部的Polymer({...})
调用不会像您期望的那样工作(并且它实际上应该在控制台上显示错误),因为您没有定义/不能定义iron-list
内部的自定义元素,而只是一个将被标记的模板。
有两种方法可以达到你想要的。
-
定义一个在
内部使用的自定义元素iron-list
<dom-module id="my-item"> <template> <div class="item"> ... <a href$="{{_getProject(item.project_id)}}">...</a> </div> </template> <script> Polymer({ is: 'my-item', properties: { item: Object }, _getProject: function(url) { return 'webservices/api/projects/' + url } }); </script> </dom-module> <iron-list items="[[data]]" as="item"> <template> <my-item item="[[item]]"></my-item> </template> </iron-list>
-
在主模板上定义
_getProject
函数<template is="dom-bind" id="app"> ... <iron-list items="[[data]]" as="item"> <template> <div> <div class="item"> ... <a href$="{{_getProject(item.project_id)}}">...</a> </div> </div> </template> </iron-list> </template> <script> var app = document.getElementById('app'); app._getProject = function (url) { return 'webservices/api/projects/' + url } </script>