首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度绑定事件

角度绑定事件
EN

Stack Overflow用户
提问于 2016-08-12 15:27:39
回答 2查看 189关注 0票数 0

我正在尝试做一些这样的事情。使用directive.The的想法是将事件与焦点和模糊绑定在一起。但模糊的问题是,它会在输入模糊后立即更改图标。

我希望检查项即使在blur.If之后仍然存在,因为它有数据。

plunker

html

代码语言:javascript
复制
<div>
<span class="delete-tag"><i class="fa fa-tags"></i></span>

<input type="text" placeholder="enter label name" class="label-input" my-change>

<span class="span-right"><i class="fa fa-pencil"></i></span></div>

<div>
<span class="delete-tag"><i class="fa fa-tags"></i></span>
<input type="text" placeholder="enter label name" class="label-input" my-change>
<span class="span-right"><i class="fa fa-pencil"></i></span>

</div>

javascript

代码语言:javascript
复制
var app = angular.module('angularjs-starter', []);

app.controller('MainCtrl', function($scope) {
});
app.directive('myChange', function() {
return function(scope, element) {
element.bind('focus', function() {
  console.log(element);
   element[0].previousElementSibling.firstChild.className = 'fa fa-trash';
   element[0].nextElementSibling.firstChild.className = 'fa fa-check';
});
element.bind('blur', function() {
   element[0].previousElementSibling.firstChild.className = 'fa fa-tags';
   element[0].nextElementSibling.firstChild.className = 'fa fa-pencil';
});
};
 });
EN

回答 2

Stack Overflow用户

发布于 2016-08-12 15:36:32

只需修改您的指令模糊事件方法,如下所示。

代码语言:javascript
复制
 element.bind('blur', function() {
  if(element[0].value.length == 0)
  {
   element[0].previousElementSibling.firstChild.className = 'fa fa-tags';
   element[0].nextElementSibling.firstChild.className = 'fa fa-pencil';
  } 
});
票数 1
EN

Stack Overflow用户

发布于 2016-08-12 16:15:20

你的问题似乎与blur事件有关,正如@Dinesh Shah所建议的:你可以通过使用他发布的代码轻松地修复它。

但是我强烈建议你创建一个指令来处理你的输入,如this 所示。

代码语言:javascript
复制
app.directive('inputBox', function() {
  return {
    restrict: 'E',
    scope : {
      value : '='
    },
    template: '<div><span class="delete-tag"><i class="fa fa-tags" ng-class="leftClass"></i></span>' + 
      '<input type="text" placeholder="enter label name" class="label-input" ng-model="value">' +
      '<span class="span-right" ng-class="rightClass"><i class="fa fa-pencil"></i></span>' +
      '</div>',
    link: function(scope, element, attrs, ctrl){

      //you could ng-focus/ng-blur here
      var input = element.children().children().eq(1);

      input.bind('focus', function() {
         scope.leftClass = 'fa fa-trash';
         rightClass = 'fa fa-check';
      });
      input.bind('blur', function() {
         if(!scope.value.length)
         {
           scope.leftClass = 'fa fa-tags';
           scope.rightClass = 'fa fa-pencil';
        }
       });
    }
  }
});

这样,您将能够以一种更容易的方式处理输入。此外,您应该使用ng-class而不是依赖javascript/jquery来切换css类。

换句话说,这是事物的正确角度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38912285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档