当前位置: 首页 > 面试题库 >

具有对象和选择功能的AngularJS BootstrapUI Typeahead

欧阳睿范
2023-03-14
问题内容

我正在尝试使用http://angular-ui.github.io/bootstrap/在Angular中实现预输入,其中typeahead字段显示完整地址,但是一旦单击,另一个字段将仅填充该地址的邮政编码。我正在尝试为此使用ng-
change或ng-click,但没有成功。

http://jsfiddle.net/UxTBB/2/

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指令非常非常灵活,可以通过多种方式实现所需的功能。我在这里介绍其中的两个。

首先,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" />

这里的关键是该as部分在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- click也没有太大用处,因为它会在单击输入字段而不是匹配弹出窗口时做出反应。最重要的是,它不会对使用keayboard所做的选择做出反应。



 类似资料:
  • 问题内容: 我正在Swift的一个Cocoa项目中工作,遇到了以下问题: Cocoa Framework中的几个类(例如或)实现了一个名为的函数,该函数打开一个窗口以打印某些内容(实际上不知道什么),因此当我在从这些类之一继承的类中工作时,将某些东西记录到控制台以进行调试,我使用了该功能。但是,尽管我指的是全局打印功能,但编译器仍认为我正在指代。 我通过声明如下的全局函数找到了一种解决方法: 而不

  • 问题是我应该把和放在哪里,因为我不能使用带有扩展函数的同伴对象?

  • 我试图用Vuejs 2实现自定义选择组件。如文档中所述,我不应该直接修改值属性,并建议使用事件将选定的数据传递给父组件。当选项值是一个对象时,我遇到了问题,却得到了[Object object]。 这是我的选择组件模板: 这是脚本部分: 这是父组件 选项: 我期待 但得到了[Object object] 我错过了什么吗?

  • 用于选择对象的选项 在可以修改某个对象之前,需要将其与周围的对象区分开来。只需选择对象,即可加以区分。只要选择了对象或者对象的一部分,即可对其进行编辑。 Illustrator 提供以下选择方法和工具: 隔离模式可让您快速将一个图层、子图层、路径或一组对象与文档中的其他所有图稿隔离开来。在隔离模式下,文档中所有未隔离的对象都会变暗,并且不可对其进行选择或编辑。 图层面板可让您快速而准确地选择单个或

  • 问题内容: 有没有一种方法可以随机选择一个功能? 例: 上面的代码似乎执行所有3个功能,而不仅仅是随机选择的一个。正确的方法是什么? 问题答案: Python函数是一流的对象:您可以按名称引用它们,而无需调用它们,然后在以后调用它们。 在您的原始代码中,您要调用这三个代码,然后在结果中随机选择。在这里,我们随机选择一个函数,然后调用它。

  • 问题内容: 我正在尝试为一个网站创建一个测试用例,其中包括带有3个链式选择的表单。加载网页时,默认情况下会填充第一选择。如果从第一个选择中选择了任何选项,则通过ajax调用填充第二个选择。以同样的方式,当在第二个选择项上选择一个选项时,则通过ajax调用填充第三个选择项。最后,在第三个选择上选择一个选项时,将在html表中填充我需要验证的信息。 三个相互关联的选择具有此结构 我肯定知道该网站使用J