角度+材质自动完成:如何仅将某些值绑定到md-option中的模型

时间:2016-01-17 07:43:43

标签: javascript angularjs autocomplete typescript angular-material

我在当前项目中使用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>

当前用户界面:

由于显而易见的原因,我不想将所有国家/地区详细信息发送回后端,并且可能存在多个值,这会使有效负载变得非常混乱。

enter image description here

IDEAL UI:

我真正想要的只是发送一个&#34; cca2&#34;与每个国家/地区相关联的值,如下所示:

enter image description here

1 个答案:

答案 0 :(得分:0)

由于您未提供 ol-lookup-input 指令的代码,因此无法显示完全适合您情况的代码。但是,我仍然可以想到两个解决方案。

解决方案1 ​​

在你的控制器中创建两个单独的阵列:一个用于芯片组件(我想那个带有 cca2 代码的阵列对于这个来说是不够的,因为你想在芯片上显示一个国家名称)和第二个用于后端(仅限cca2代码)。您可以附加一个函数,当用户选择国家/地区时,将使用md-selected-item-change中的md-autocomplete属性或筹码组件中的md-transform-chip附加一个函数,并使用它来填充第二个模型。< / p>

解决方案2

我猜您的代码中有一个函数可以将选定的国家/地区发送到后端。在将它们发送到服务器之前,您可以从所选国家/地区的模型中取出cca2代码。