我在學習AngularJs,我正在玩第三方Javascript組件。 在某一點上的控件初始化如下:Angular的jQuery元素初始化
$(document).ready(function() {
$('#SomeId').initialize();
});
有沒有辦法將其轉換爲更多的東西Angularish?我不想操縱控制器中的DOM,但我不確定如何初始化它。
我在學習AngularJs,我正在玩第三方Javascript組件。 在某一點上的控件初始化如下:Angular的jQuery元素初始化
$(document).ready(function() {
$('#SomeId').initialize();
});
有沒有辦法將其轉換爲更多的東西Angularish?我不想操縱控制器中的DOM,但我不確定如何初始化它。
此代碼不一定是錯誤的。你要注意的是,在角度上下文(jQuery回調/插件等)之外的javascript操縱$scope
值,因爲這些函數不會觸發角度摘要循環,並且會導致DOM和$ scope之間斷開連接。
以下是有關這個週期,你需要知道它是什麼的一些詳細信息:http://jimhoskins.com/2012/12/17/angularjs-and-apply.html
這是一個常見的情況與jQuery(以及爲什麼你應該嘗試使用角度服務(即:$ HTTP ),而不是:
// When you manipulate the $scope with a non-angular callback,
// you have to run $scope.$apply() to tell angular about the
// change in order to repaint the DOM
$.get("/getUser", function(data) {
$scope.user = data; // set $scope data in callback
$scope.$apply(); // run digest so anything in the DOM binded to the {{user}} model gets updated
});
一般來說,你不需要操作DOM這樣有角...所以你真的不需要jQuery的使用角「指令」是聲明,封裝方式做它在Angular中有很多第三方組件可供你使用,這些組件都是用指令正確構建的:修改使用這些,而不是試圖轉換一個jQuery插件(這實際上只是添加了你已經有權訪問的Angular的jQuery膨脹)。開始尋找可以使用的Angular指令的好地方是http://ngmodules.org/
您可以爲該功能創建指令並將DOM操作和初始化代碼移到那裏。閱讀更多關於指令 – 2014-08-31 19:22:09