2015-06-22 27 views
0

我有以下查詢循環訪問字符串數組wikiContent。一旦我顯示數組中的前三個值(句子),我想添加一個說明More的鏈接,當您單擊它時,它會顯示剩餘的句子。使用ng-click切換內容

這裏是我有什麼(這是使用$http一個AJAX要求內):

var opt = "<span>"; 
for(var j = 0; j < wikiContent.length; j++){ 
    opt += wikiContent[j]; 
    if(j === 2){ 
     opt += "</span><span ng-hide='!show'>"; 
    } 
} 
opt += " ... <a href=\"\" ng-click='show=!show'>More</a>"; 
opt += "</span>"; 

$rootScope.text = opt; 

當我點擊More,它兩兩件事:

  • 它重新加載頁面。
  • 它不切換文本

我能做些什麼來解決這兩個問題?

下面是HTML:

<div class="panel-body" ng-bind-html="toHtml(text)"></div> 

這裏是toHtml()功能:

$scope.toHtml = function(string){ 
    return $sce.trustAsHtml(string); 
}; 
+1

你在那裏有一個空href。您可能需要添加'#'或'javascript:;'或使用按鈕。您也可以停止傳播,如[this](http://stackoverflow.com/questions/20300866/angularjs-ng-click-stoppropagation)。 – area28

+0

即停止重新加載,但它不修復跨度的切換。 –

+0

'ng-click'正在運行嗎?你可以提醒'ng-click'中的'show'的值來測試嗎? – area28

回答

0

看完的文件,角提到,這是一個糟糕的想法從你的控制器的DOM工作:

注意:此錯誤通常意味着您正在從您的控制器訪問DOM,而我這通常是一種糟糕的編碼風格,違反了關注點分離的標誌。

所以,我所做的就是創建一個包括目錄,並把包含的東西在裏面,現在我使用ng-include,而不是建立在控制器中的DOM項目。