用对象替换纸张下拉菜单中选定纸张项目的空值
Replace null value of selected paper-item in paper-dropdown-menu with object
我无法使 site.address.country
的这种简单绑定正常工作:
我的后端 returns 像这样的 json 对象,以防未设置国家/地区:
{ "address" : { "street" : null, "country" : null } }
有了这个结构,当paper-dropdown-menu
改变时,Polymer似乎不能用
替换null
-country的值
{ "address" : { "street" : null, "country" : { "id" : "lu" } } }
让 Polymer 将 country 的空值替换为 { "id" : "lu" }
的正确方法是什么?
到目前为止,这是我的代码:
<paper-dropdown-menu label="Country">
<paper-menu attr-for-selected="value" selected="{{site.address.country.id}}" class="dropdown-content">
<paper-item value="lu">Luxembourg</paper-item>
</paper-menu>
</paper-dropdown-menu>
<paper-input value="{{site.address.street}}" label="Street"></paper-input>
我可以但不想做一些骇人听闻的事情,比如在我从后端获取值后替换它,à la:
siteLoaded: function(e) {
if (!e.detail.response.address.country) {
e.detail.response.address.country = { "id" : "" };
}
this.set("site", e.detail.response);
}
尝试使用以下方法为 属性 类型的对象定义默认值(通过定义 returns 默认对象的函数):
...
Polymer({
is : "site-form",
properties : {
site : {
type : Object,
value : function() { return { "address" : { "country" : {id: 0} } }; }
}
},
...
编辑:
在您重新格式化问题后,我明白了这个问题。在你的情况下,country.id 是未定义的,所以我想你的 hacky 方式应该是正确绑定的最佳解决方案。
我无法使 site.address.country
的这种简单绑定正常工作:
我的后端 returns 像这样的 json 对象,以防未设置国家/地区:
{ "address" : { "street" : null, "country" : null } }
有了这个结构,当paper-dropdown-menu
改变时,Polymer似乎不能用
null
-country的值
{ "address" : { "street" : null, "country" : { "id" : "lu" } } }
让 Polymer 将 country 的空值替换为 { "id" : "lu" }
的正确方法是什么?
到目前为止,这是我的代码:
<paper-dropdown-menu label="Country">
<paper-menu attr-for-selected="value" selected="{{site.address.country.id}}" class="dropdown-content">
<paper-item value="lu">Luxembourg</paper-item>
</paper-menu>
</paper-dropdown-menu>
<paper-input value="{{site.address.street}}" label="Street"></paper-input>
我可以但不想做一些骇人听闻的事情,比如在我从后端获取值后替换它,à la:
siteLoaded: function(e) {
if (!e.detail.response.address.country) {
e.detail.response.address.country = { "id" : "" };
}
this.set("site", e.detail.response);
}
尝试使用以下方法为 属性 类型的对象定义默认值(通过定义 returns 默认对象的函数):
...
Polymer({
is : "site-form",
properties : {
site : {
type : Object,
value : function() { return { "address" : { "country" : {id: 0} } }; }
}
},
...
编辑: 在您重新格式化问题后,我明白了这个问题。在你的情况下,country.id 是未定义的,所以我想你的 hacky 方式应该是正确绑定的最佳解决方案。