在AngularJS BootstrapUI中的Typeahead中,$viewValue是什么?

39

我正在尝试使用http://angular-ui.github.io/bootstrap/在 Angular 中实现一个类型提示。

看起来应该很容易,但是我遇到了以下错误:

全局符号$viewValue需要明确的包名称。

$viewValue是什么?它似乎没有被定义。

谢谢

1个回答

24

这里有一个可工作的自动完成示例:

<div class="container">
    <div ng-controller="mainCtrl" class="row-fluid">
        <form class="row-fluid">
            <div class="container-fluid">
                <input type="text" ng-model="selected" typeahead="state for state in states | filter:$viewValue" />
            </div>
        </form>
    </div>
</div>

<script>
angular.module('myApp', ['ui.bootstrap'])
.controller("mainCtrl", function ($scope) {
   $scope.selected = '';
   $scope.states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Dakota', 'North Carolina', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'];
});
</script>

http://jsfiddle.net/alfrescian/ZjPWe/

$viewValue 是视图中的当前值——您的字符串输入。 $viewValuengModel中指定。


好的,我已经解决了我的问题 - 错误是因为我在使用 Perl 编写页面时需要转义 $viewValue 变量。然而,我仍然不明白为什么在过滤器中它是 $viewValue 而不是 'selected' ,就像在 ng-model 指令中一样?难道 $viewModel 是从指令中导出的吗? - stampeder
5
选中的值是从类型提示(typeahead)值中选择的。$viewValue 是输入框当前的字符串。 $viewValue 是 ngModel 的一部分:http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController - alfrescian
啊,好的 - 謝謝你的回答和迅速的回复。另外我正在使用一個對象數組 - 代表地址而不是簡單的數組 - 我想在點擊顯示完整地址後填充另一個字段用於郵政編碼。這可能嗎?我正在研究ng-change,但毫無成效- http://jsfiddle.net/UxTBB/ - stampeder
只需打开一个新问题...你的jsfiddle仍然与我的相同。 - alfrescian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接