Polymer 1.0在<template> dom-repeat中使用Javascript更改绑定

时间:2016-03-27 19:52:51

标签: javascript polymer polymer-1.0

我不知道如何编辑标签

中的绑定(变量)
<template is="dom-repeat" items="{{ajaxResponse}}">
  <script>
        var temp = {{item.title}};
        //I want to do this
        {{item.title}} = temp.slice(1, 10);
  </script>      
  <google-map-marker latitude="{{item.lat}}" longitude="{{item.lng}}" title="{{item.title}}"> </google-map-marker>
</template>

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用computed binding

<google-map-marker title="[[updateTitle(item.title)]]"></google-map-marker>

如果您在自己的自定义元素中,则可以将该函数添加到元素描述中:

Polymer({
  is: 'your-element',
  updateTitle: function (title) {
    return title.slice(1,10);
  }
});

或者,如果您在dom-bind,则可以在template元素上定义该功能。

<template is="dom-bind" id="app">
  ...
</template>

<script>
  document.getElementById('app').updateTitle= function (title) {
    return title.slice(1,10);
  };
</script>

答案 1 :(得分:0)

如果您想更改ajax响应,最好通过on-response事件进行更改。 这个改变很少

<template is="dom-repeat" id="ironList" items="[]">
<google-map-marker latitude="{{item.lat}}" longitude="{{item.lng}}" title="  {{item.title}}"> </google-map-marker>
</template>

然后你需要将函数添加到响应事件到iron-ajax元素。

<iron-ajax on-response="responseFunc"

然后描述它func:

responseFunc: function(e) {
//receive all response data in array
var items = e.detail.response;
//perform your operations
var item = items[0]; 
var temp = item.title;
item.title = temp.slice(1, 10);
//add you changed data to template
this.$.ironList.push('items', item);
}

如果响应对象中有很多数组,则可以轻松使用循环。