Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ng blur和ui sref不会';I don’我没有按预期工作_Javascript_Html_Angularjs_Javascript Events_Angular Ui - Fatal编程技术网

Javascript 使用ng blur和ui sref不会';I don’我没有按预期工作

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()" />

我有一个带有自定义下拉结果面板的搜索字段,当在其中键入一个单词或当它被聚焦时,会显示该字段。所以我的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>
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}