显然这是因为我是 AngularJS 的新手,但我不知道是什么问题。
基本上,我有一个项目列表和一个用于过滤位于弹出侧抽屉中的列表的输入控件。
直到我添加了一个指令以在该输入控件变得可见时将焦点设置到该输入控件之前,它才能完美运行。然后焦点起作用,但过滤器停止工作。没有错误。从标记中删除 focus="{{open}}" 会使过滤器工作。
焦点方法取自这篇 StackOverflow 帖子: 如何在输入字段上设置焦点?
这是代码...
/* impersonate.html */
<section class="impersonate">
<div header></div>
<ul>
<li ng-repeat="item in items | filter:search">{{item.name}}</li>
</ul>
<div class="handle handle-right icon-search" tap="toggle()"></div>
<div class="drawer drawer-right"
ng-class="{expanded: open, collapsed: !open}">
Search<br />
<input class="SearchBox" ng-model="search.name"
focus="{{open}}" type="text">
</div>
</section>
// impersonateController.js
angular
.module('sales')
.controller(
'ImpersonateController',
[
'$scope',
function($scope) {
$scope.open = false;
$scope.toggle = function () {
$scope.open = !$scope.open;
}
}]
);
// app.js
angular
.module('myApp')
.directive('focus', function($timeout) {
return {
scope: { trigger: '@focus' },
link: function(scope, element) {
scope.$watch('trigger', function(value) {
if(value === "true") {
console.log('trigger',value);
$timeout(function() {
element[0].focus();
});
}
});
}
};
})
任何帮助将不胜感激!
谢谢!萨德