我使用ui-bootstrap typeahead用于当用户键入以显示所有可供他编写的变量时,这些变量是来自加载的对象的属性Ex:item.cost + item.quantity 我的问题是我希望每次用户输入“item”时都会显示建议。我注意到typeahead只适用于一个单词并且在开始时。
HTML
<div class="modal-body">
Add expression:
<textarea style="width: 568px;" ng-model="item.formula"
uib-typeahead="state for state in states "
typeahead-show-hint="true"
typeahead-on-select="item"
ng-change="eval(item.formula)">
</textarea>
<p><b>Result:</b> <br>
<div style="width: 100%">{{ans}}
</div>
</p>
</div>
控制器
ctrl.controller('myController', ['$scope', function ($scope) {
$scope.imageShowModal = function (item) { //loads the object items
$scope.item = item;
$scope.states =Object.keys(item); //get the JSON keys from item object like cost,price,quantity,workflow...
};
$scope.eval = function (v) {
try {
$scope.ans = $scope.$eval(v);
} catch (e) {
}
};
答案 0 :(得分:0)
您可以在uib-typeahead
表达式中使用自定义过滤器,例如:uib-typeahead="state for state in states | myCustomFilter:$viewValue"
您的案例中的自定义过滤器可能如下所示:
angular.module('myApp')
.filter('myCustomFilter', function() {
return function(list, term) {
if (term.indexOf('item.') === -1)
return [];
var filteredList = [];
angular.forEach(list, function(value) {
if (value.indexOf(term) !== -1)
filteredList.push(value);
});
return filteredList;
}
});