2015-04-06 62 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