2013-12-16 36 views
0

http://jsfiddle.net/HB7LU/1356/AngularJS結合考慮到本的jsfiddle動態HTML

我從服務中檢索對象的數組。然後我創建一個html字符串,並在該數組中存在的項目周圍創建鏈接。我想要點擊處理程序直接綁定到數組中的項目。我之後的行爲是在ngRepeat中使用對象時可以直接傳入ngClick的方式。

//these were retrieved from a service first 
$scope.termsToBindTo = [ 
    {name: 'test 1', active: false }, 
    {name: 'test 2', active: false }, 
    {name: 'test 3', active: false }]; 

$scope.rawString = 'test 1, test 2, and test 3';  

//then this html string was built after termsToBindTo is populated 
$scope.myHTML = '<a href="#" ng-click="itemClicked(item)">test 1</a>, <a href="#" ng-click="itemClicked(item)">test 2</a>, and <a href="#" ng-click="itemClicked(item)">test 3</a>'; 

更新:我將rawString添加到控制器。我認爲下面的建議只是使用ngTopeat而不是termsToBindTo,但我的視圖必須像rawString看起來一樣呈現鏈接。換句話說,我不能只提供termsToBindTo的列表。該視圖必須提供鏈接以及rawString中存在的任何格式或標點符號。

回答

1

更新JsFiddle

您可以使用您需要ngRepeat和幾個標點符號的任何和顯示格式嵌套0​​:

<span data-ng-repeat="term in termsToBindTo"> 
    <a href="#" data-ng-click="itemClicked(term)">{{term.name}}</a><span ng-show="$index == termsToBindTo.length - 2">, and </span><span ng-show="$index < termsToBindTo.length - 2">, </span> 
</span> 
+1

謝謝!我沒有完全按照你所描述的去做,但它讓我回答了我的答案。 –

0

我不知道我知道你想要什麼,但你應該使用NG-重複:

<div data-ng-repeat="term in termsToBindTo"> 
<a href="#" data-ng-click="itemClicked(term)" data-ng-bind="term.name"></a> 
</div> 
+0

我確實考慮過這一點,但它不符合我的要求。請參閱更新的問題。 –

0

感謝@package我結束了翻錄串入件:

test 1, test 2, test 3, and test 4 
[0] --> [test 1] 
[1] --> [, ] 
[2] --> [test 2] 
[3] --> [, ] 
[4] --> [test 3] 
[5] --> [, and ] 
[6] --> [test 4] 

然後用ngSwitch對上面數組中的每個對象上存在的屬性使用ngSwitch重複顯示href或靜態文本。