我有角碼,通過$http.get
異步獲取8個json文件。這是在附加的模板代碼中使用ng-init="someFunct()"
來調用的。一切都很好,包括當用戶鍵入輸入文本框時進行過濾。過濾對我的應用程序尤其重要。添加內容到DOM後,AngularJS已完成異步加載
爲了使過濾更好,我從所說的json文件中提取關鍵字,然後我用<span class="tag" ng-click="filterWith='kywd'">{{kywd}}</span>
包裝,希望用戶可以點擊標籤而不是類型。這隻適用於靜態嵌入標籤 - 在實際應用程序中,我無法預先知道關鍵字。如果我通過$("#someContainerID").append(TAG_HTML_CODE)
或類似的動態插入它永遠不會工作!
概括地說,這是我需要實現:
1)動態地注入多個(數百個)這樣的標籤到DOM;
2)只有在加載並編譯了所有內容之後才注入標記 - 特別是在讀取了json文件並提取了關鍵字之後;
3)我注入標記都需要的東西,如果有一種方法來告訴當AngularJS已經完成了所有其他的處理應對像ng-click="filterWith='some_keyword'"
- 多麼偉大,這將是!我已經閱讀無處不在,它似乎如此神祕和混亂 - 請幫助!
我都甚至試圖將以下代碼無濟於事:
$timeout(function() {
$scope.$apply(function() {
//code that works on the keywords - works perfect!
var filterRegex = /\s*([\w\d.%]+)\s*/i;
var dom_elem = angular.element(document.querySelector("#filter_tags"));
dom_elem.html("");
for (var m = 0; m < tags.length; m += 1) {
var match = filterRegex.exec(tags[m][0]);
if (match != null) {
dom_elem.append($compile("<span data-ng-model=\"filterWith\" data-ng-click=\"filterWith='" + match[1] + "'\" title=\"" + tags[m][1] + "\" class=\"sk3tag clk\">" + match[1] + "</span>")($scope));
}
}
});
}, 10000, false);
}
編輯:縮小我的挑戰主要是一個範圍內!
對我來說,更大的挑戰是如何在動態注入代碼中啓用ng-click
以及如何正確執行。
確定。我會嘗試它,但似乎只會解決知道什麼時候下載文件的問題?我面臨的更大挑戰是如何在動態注入的代碼中啓用'ng-click'。 – user3607612
@ user3607612你應該真的瞭解有關角度指令而不是手動操作DOM https://docs.angularjs.org/guide/directive –