【发布时间】:2014-12-16 21:14:51
【问题描述】:
我有一个带有自定义下拉结果面板的搜索字段,当在其中输入单词或获得焦点时会显示该面板。所以我的 html 看起来像这样:
<div class="input-group">
<input type="text" class="form-control" ng-model="userSearch" ng-change="onInputChange()" ng-focus="onInputChange()" ng-blur="onInputBlur()" />
<span class="input-group-btn">
<button type="button" ng-click="search()">Search</button>
</span>
</div>
<div id="results" ng-if="panelShown">
<div ng-repeat="contact in contacts | filter: { name: userSearch }">
<a ui-sref="profile({ id: contact.id })">{{ contact.name }}</a>
</div>
</div>
JavaScript 是这样的:
app.controller("SearchController", ["$scope", function($scope) {
$scope.contacts = [...];
$scope.panelShown = false;
$scope.onInputChange = function() {
$scope.panelShown = true;
};
$scope.onInputBlur = function() {
$scope.panelShown = false;
};
$scope.search = function() {
// bla bla bla...
};
}]);
所以,如你所见,我的$scope.contacts数组数据的结构是这样的:
[
{
id: "1",
name: "George"
},
{
id: "2",
name: "Adam"
},
{
id: "3",
name: "Ron"
}
...
]
我希望在输入模糊时隐藏带有结果的面板 (#results div) 并且当它再次成为焦点时 - 显示它。这实际上是完美的。
我遇到的问题是,当我单击某些结果时,我没有从ui-sref 发送到状态(在示例中 - 我必须被重定向到profile 状态)。我猜模糊事件会阻止那里发生,但我想不出任何解决方案。
有人可以帮我吗?
【问题讨论】:
标签: javascript html angularjs dom-events angular-ui