我试图在Angular中使用
http://angular-ui.github.io/bootstrap/实现一个前面,其中typeahead字段显示完整的地址,但一旦点击另一个字段填充与该地址的邮政编码。我试图使用ng-change或ng-click这个,但没有任何成功..
angular.module('myApp',['ui.bootstrap']) .controller("mainCtrl",function ($scope) { $scope.selected = ''; $scope.states = [{postcode:'B1',address:'Bull ring'},{postcode:'M1',address:'Manchester'}]; $scope.setPcode = function(site) { $scope.selPcode = site.postcode; }; }); <div class="container"> <div ng-controller="mainCtrl" class="row-fluid"> <form class="row-fluid"> <div class="container-fluid"> postcode <input type="text" ng-model="selPcode" /> typeahead <input type="text" ng-change="setPcode(site)" ng-model="selected" typeahead="state.address for state in states | filter:$viewValue" /> </div> </form> </div> </div>
有任何想法吗?
从
http://angular-ui.github.io/bootstrap/的typeahead指令非常,非常灵活,有很多方法实现所需的功能。我在这里提出了2个。
原文链接:https://www.f2er.com/angularjs/145635.html首先,typeahead指令使用与AngularJS select指令非常相似的语法。这使您可以完全控制显示的标签和绑定为模型值的数据。所以你可以做的是简单地显示地址作为标签和绑定邮政编码直接selPcode:
<input type="text" ng-model="selPcode" typeahead="state.postcode as state.address for state in states | filter:$viewValue" typeahead-editable="false" />
这里的关键是作为一部分是在typeahead表达式:
typeahead =“state.postcode as state.address for state in states
此外,请注意,我使用typeahead-editable =“false”属性绑定模型,只有当做出选择。工作jsFiddle这里:http://jsfiddle.net/jLupa/
另一个解决方案,如果你真的需要使用回调函数是使用typeahead-on-select属性:
<input type="text" typeahead-on-select="setPcode($item)" ng-model="selected" typeahead="state.address for state in states | filter:$viewValue" />
它允许您在选择匹配时指定回调。一个工作的小提琴:
http://jsfiddle.net/t8BV2/
最后一个注意事项:ng-change不会在这里工作,因为它会对输入中的任何更改作出反应,而您只想捕获选择。 ng单击没有太多用处,因为它对点击输入字段而不是匹配弹出窗口作出反应。除此之外,它不会对使用keayboard做的选择做出反应。