我在当前项目中使用Angular和Angular Material。我正在为某个组件使用自动完成功能(https://material.angularjs.org/latest/demo/autocomplete),但是,我们一直在努力只将某些属性绑定到为值返回的模型。
我的问题是如何在下面的案例中仅将单个或某些值绑定到模型?
在这个例子中,我有一个countries.json文件,我填充了我的md-select和几个键/值对:
{"name":"Australia","tld":".au","cca2":"AU","ccn3":36,"cca3":"AUS","currency":"AUD","calling-code":"61","alt-spellings":"AU","relevance":1.5,"region":"Oceania","subregion":"Australia,New Zealand"}
HTML
我的HTML只是使用自动完成组件,但我尝试使用ng-value仅绑定" cca2"对模型的价值,没有任何运气。
<ol-lookup-input
items="vm.allCountries"
ng-value="vm.allCountries.cca2"
selected-items="vm.filter.value"
search-field="name"
placeholder="Type to add a country">
</ol-lookup-input>
当前用户界面:
由于显而易见的原因,我不想将所有国家/地区详细信息发送回后端,并且可能存在多个值,这会使有效负载变得非常混乱。
IDEAL UI:
我真正想要的只是发送一个&#34; cca2&#34;与每个国家/地区相关联的值,如下所示:
答案 0 :(得分:0)
由于您未提供 ol-lookup-input 指令的代码,因此无法显示完全适合您情况的代码。但是,我仍然可以想到两个解决方案。
解决方案1
在你的控制器中创建两个单独的阵列:一个用于芯片组件(我想那个带有 cca2 代码的阵列对于这个来说是不够的,因为你想在芯片上显示一个国家名称)和第二个用于后端(仅限cca2代码)。您可以附加一个函数,当用户选择国家/地区时,将使用md-selected-item-change
中的md-autocomplete
属性或筹码组件中的md-transform-chip
附加一个函数,并使用它来填充第二个模型。< / p>
解决方案2
我猜您的代码中有一个函数可以将选定的国家/地区发送到后端。在将它们发送到服务器之前,您可以从所选国家/地区的模型中取出cca2代码。