Javascript 使用ng blur和ui sref不会';I don’我没有按预期工作
我有一个带有自定义下拉结果面板的搜索字段,当在其中键入一个单词或当它被聚焦时,会显示该字段。所以我的html看起来像这样:Javascript 使用ng blur和ui sref不会';I don’我没有按预期工作,javascript,html,angularjs,javascript-events,angular-ui,Javascript,Html,Angularjs,Javascript Events,Angular Ui,我有一个带有自定义下拉结果面板的搜索字段,当在其中键入一个单词或当它被聚焦时,会显示该字段。所以我的html看起来像这样: <div class="input-group"> <input type="text" class="form-control" ng-model="userSearch" ng-change="onInputChange()" ng-focus="onInputChange()" ng-blur="onInputBlur()" />
<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>
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...
};
}]);
如您所见,my$scope.contacts
数组数据的结构如下:
[
{
id: "1",
name: "George"
},
{
id: "2",
name: "Adam"
},
{
id: "3",
name: "Ron"
}
...
]
我想在输入模糊时隐藏带有结果的面板(#results
div),并在再次聚焦时显示它。事实上,这很好用
我遇到的问题是,当我单击某些结果时,我没有从ui sref
发送到状态(在示例中,我必须重定向到配置文件
状态)。我猜模糊事件阻止了这种情况的发生,但我想不出任何解决方案
有人能帮我吗?
提前谢谢 这是因为
blur
事件在绑定ui sref
的click
事件之前触发,因此在注册单击时,您尝试单击的按钮被隐藏(因此没有收到单击)
要解决这个问题,您可以使用ng mousedown
。mousedown
事件在blur
事件之前触发,因此它应该可以解决您的问题:
app.controller("SearchController", function($scope, $state) {
$scope.goToState = function (state, params) {
$state.go(state, params);
}
}
<a ng-mousedown="goToState('profile', {id: contact.id})">{{ contact.name }}</a>
app.controller(“SearchController”),函数($scope,$state){
$scope.goToState=函数(状态,参数){
$state.go(state,params);
}
}
{{contact.name}