【发布时间】:2015-08-25 19:45:16
【问题描述】:
这是我的index.html
<form ng-controller = "emailViewController">
<tags-input placeholder="To" ng-model="select" typeahead="toPerson for toPerson in to | filter:$viewValue" style="width:95%;">
</tags-input>
<br />
<input type="text" placeholder="Subject" style="width:95%;"><br />
<textarea style="width:95%;" rows="10"></textarea>
</form>
emailViewController.js
(function() {
'use strict';
var emailViewController = function (fetchDataService,$scope,$filter) {
var url = 'app/mock/emails.json';
fetchDataService.getContent(url)
.then(function(response){
$scope.emails = response.data;
$scope.to = [];
angular.forEach($scope.emails, function(key, value) {
$scope.to.push(key.to);
})
$scope.loadEmails('Primary');
});
}
angular.module('iisEmail')
.controller ('emailViewController',
['fetchDataService', '$scope','$filter', emailViewController]);
}());
Typeahead 工作正常,直到我删除了input 标记(它是一个属性)并添加了tags-input 指令。所以,我之前有<input placeholder="To" ng-model="select" typeahead="toPerson for toPerson in to | filter:$viewValue" style="width:95%;">。现在,我有<tags-input placeholder="To" ng-model="select" typeahead="toPerson for toPerson in to | filter:$viewValue" style="width:95%;">,但它不起作用。
我认为这是因为 typeahead 仅适用于 input tags。有没有人知道如何让typeahead 与ngTagsInput 一起工作?
为了避免任何混淆,我想明确一点,我知道如何将autocomplete 与ngTagsInput 一起使用。我的问题专门针对我在使用typeahead 和ngTagsInput 时遇到的问题。
这里是一个笨蛋:http://plnkr.co/edit/B1aV9TLu58a2iGhpTUrN?p=preview
更新
我使用angular-tags 而不是ngTagsInput 解决了这个问题。 ngTagsInput 不适用于 typeahead。选择的最佳答案很好地解释了为什么会这样。这是使用angular-tags - http://plnkr.co/edit/PaG1k5N37BTOflObnN7K?p=preview 解决此问题的 Plunker
【问题讨论】:
-
考虑给出一个更小的例子来说明问题?也许是个笨蛋? :)
-
感谢您的评论。我已经编辑了我的问题@toskv
-
我看到 ngTagsInput 指令确实生成了一些 html,很可能 typeahead 属性不会出现在 input 元素上。运行代码时,您应该能够在生成的 html 中进行检查。 :)
-
顺便说一句,你也有一个错误,emailViewController 函数缺少一个 } 来正确关闭。也许就是这样。
-
@toskv 我想你不明白我的问题。我已经添加了更多细节,所以希望现在很清楚。
标签: javascript angularjs angularjs-directive typeahead.js ng-tags-input