2015-04-06 60 views
0

我创建了一个指令transclude功能,该指令工作正常,但问题是,在儿童transcluded模板我有一个文本说“某人的名字” ,当鼠标悬停时,文本的颜色应该是白色的,当鼠标离开时,它应该是实际分配的颜色。我需要实现这一点没有外部CSS文件mouseover和mouseleave文本颜色更改不在指令链接

我曾尝试用下面的代码,但它似乎没有工作

elem.find("a").bind("mouseover", function() 
{ 
    scope.actualColor = angular.copy(scope.textColor.color); 
    scope.textColor.color = "#000000"; 
}); 
elem.find("a").bind("mouseleave", function() 
{ 
    scope.textColor.color = scope.actualColor; 
}); 

PLUNKER

谁能告诉我一些方案来解决这个

回答

1

您试图绑定AngularJs世界以外的事件,AngularJs无法检测到任何更改。您需要使用scope.$apply()AngularJs知道有对scope一些变化:

 elem.find("a").bind("mouseover", function() 
     { 
      scope.actualColor = angular.copy(scope.textColor.color); 
      scope.textColor.color = "#000000"; 
      scope.$apply(); 

     }); 
     elem.find("a").bind("mouseleave", function() 
     { 
      scope.textColor.color = scope.actualColor; 
      scope.$apply(); 
     }); 

Plunkr

+0

漂亮的渔获@LVarayut,它在你在这里给予的榨汁机工作检查这[plunker](http://plnkr.co/edit/yvfXTiev5XIOIzFSRdJO?p=preview)我已经实现了相同的场景,我有申请一个下拉列表,但添加mouseover和mouseleave监听器后,选项列表关闭,悬停功能不起作用,请查看第56-67行 – 2015-04-06 11:09:54

+0

关于该问题的任何想法 – 2015-04-06 11:19:20

+0

@Alex,您可以试着解决它你自己在这一刻。我到家时我会看看它。 – lvarayut 2015-04-06 12:39:24