2

我有一個論壇主題(主題)的列表,當用戶鼠標懸停在每個我希望它的元數據顯示在一個單獨的面板,以確定哪個線程是選擇我試圖通過$索引作爲$發射的參數,但這似乎打破了功能。

檢視:

<header ng-include="includes.header.src"></header> 
<div id="content-wrapper"> 
    <div ng-include="includes.threadList.src" id="content-left"></div> 
    <div id="content-divider"></div> 
    <div ng-include="includes.threadDetails.src" id="content-right"></div> 
</div> 

對答包括(其中的問題是存在的):

<ul id="threadList"> 
    <li ng-repeat="thread in threadList | filter:includes.header.searchQuery" ng-mouseover="$emit('updateThreadDetails', {{$index}})"> 
     <a href="/#/threads" ng-click=""> 
     {{thread.title}}, moused over {{count}} times. This is item {{$index}} 
     </a> 
    </li> 
</ul> 

threadDetails包括:

<h3>{{includes.threadDetails.title}}</h3> 

控制器:

function threadListCtrl($scope){ 
    $scope.count = 0; 
    $scope.$on('updateThreadDetails', function(event,index) { 
     $scope.count++; 
     $scope.includes.threadDetails.title = index; //$scope.threadList[index].title; 
    }); 

    $scope.threadList = [ 
     {title: 'I like horse'}, 
     {title: 'I like turtle'}, 
     {title: 'I like actor'} 
    ]; 
} 

通過ng-mouseover="$emit('updateThreadDetails', 'myString')"傳遞刺激按預期工作(includes.threadDetails.title成爲'myString')。下面是從對答健康示例文本:

I like horse, moused over 26 times. This is item 0 
I like turtle, moused over 26 times. This is item 1 
I like actor, moused over 26 times. This is item 2 

當{{$指數}}傳遞輸出生病和'moused over x times' x是在0到線的詳細信息保持不變。作爲一種變通方法我試過預先設定{{$指數}}所以我只是路過原始正是如此,雖然這並不工作:

ng-mouseover="index = '{{$index}}'; $emit('updateThreadDetails', index)" 
+0

你的意思是說'NG-鼠標懸停=「指數= $指數; $放出('updateThreadDetails',$ index)「'?由於您使用的是角度指令'{{}},因此不需要分隔符。 –

+0

我做到了,完美的作品。 –

回答

2

你不需要數據綁定(從雙大括號)在表達式中,您傳遞給ngMouseOver,因爲Angular已經期望將其作爲Angular表達式處理(使用$interpolate)。所以,你可以直接使用變量$index,就像這樣:

ng-mouseover="$emit('updateThreadDetails', $index)" 

另外,我假設你也想更新每個項目的數量,分別。所以,也許你會喜歡:

$scope.count[index]++; 

顯示在你的HTML這樣的:

moused over {{count[$index]}} 

demo fiddle