我已按照http://www.polymer-project.org/docs/polymer/binding-types.html#iterative-templates中的示例进行操作,但我没有工作代码。
我试图为我制造的怪物创作工具制作一个聚合物元素,因为我的一个朋友对于一个怪物战斗游戏有很好的想法,我想帮助他跟踪他的想法。
所以我为怪物统计领域制作了一个自定义元素。由于我们并不完全确定所有统计数据最终会是什么,因此我希望尽可能将其设为模块化。
<link rel="import" href="../../../bower_components/paper-input/paper-input.html">
<!-- Calling noscript until I can better understand -->
<polymer-element name="monster-stat-field"
attributes = "stat value"
noscript
>
<template>
<div id="name">
{{stat}}
</div>
<div id="value">
<paper-input
type="number"
error="Required, needs to be a number!"
required
label="{{stat}}"
value="{{value}}"
layout vertical>
</paper-input>
</div>
</template>
</polymer-element>
这应该可以继承纸张输入,当然。
我所做的是将其嵌套在另一个定制的聚合物元素中:
<link rel="import" href="../monster-stat-field/monster-stat-field.html">
<link rel="import" href="../../../bower_components/paper-input/paper-input.html">
<link rel="import" href="../../../bower_components/paper-button/paper-button.html">
<!-- Calling noscript until I can better understand -->
<polymer-element name="monster-form"
attributes = "name desc stats"
noscript
>
<template>
<p>
<paper-input
label="Monster Name"
value="{{name}}"
required
floatingLabel
error="Required Field!">
</paper-input>
</p>
<p>
<paper-input
label="Description"
value="{{desc}}"
floatingLabel>
</paper-input>
</p>
<template repeat="{{s in stats}}">
<p>
<monster-stat-field stat="{{s.name}}" value="{{s.value}}">
</monster-stat-field>
</p>
</template>
<paper-button label="Save" raisedButton></paper-button>
</template>
</polymer-element>
然后在我的主页上我有:
<link rel="import" href="static/customComponents/monster/monster-form/monster-form.html">
...some other stuff...
<monster-form
name="Amalgam"
desc="The Liquid Metal"
stats="[
{name: 'hp', value: 60},
{name: 'cost', value: 60},
{name: 'ene', value: 90},
{name: 'str', value: 90},
{name: 'wis', value: 75},
{name: 'def', value: 95},
{name: 'man', value: 90},
{name: 'agi', value: 100}
]"
></monster-form> <br/>
<p>Here is calling the monster stat field manually</p> <br/>
<monster-stat-field stat="HP" value="60">
</monster-stat-field>
原来如此!我显示的是怪物的名称和desc,但统计数据根本不存在。手动调用它确实有效,但我觉得这很奇怪,因为我没有明确地导入它。
这是因为我正在调用noscript吗?或者是别的什么?任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
您需要更改两件事才能使其发挥作用:
stats
属性的JSON字符串不正确。你需要在哈希键周围加双引号:
stats='[
{"name": "hp", "value": 60},
{"name": "cost", "value": 60},
{"name": "ene", "value": 90},
{"name": "str", "value": 90},
{"name": "wis", "value": 75},
{"name": "def", "value": 95},
{"name": "man", "value": 90},
{"name": "agi", "value": 100}
]'
您需要提示stats
属性的类型,以便Polymer知道它需要将其转换为数组。从noscript
元素中删除monster-form
属性并添加created
处理函数:
<script>
Polymer('monster-form', {
created: function() {
this.stats = [];
}
});
</script>
现在,Polymer会将stats
属性字符串转换为数组(对象)。