文章出處

問題描述
解決方案
當你簡單的動態給頁面插入html時,
此時html帶有angular的語法不會執行的。
var uploadInfo = '上傳成功!<a ng-click="quitTo('customer')">點擊</a>跳轉到客戶列表界面';
angular.element('.modal-body').append(uploadInfo);
此時ng-click不會執行
將uploadInfo通過$compile進行處理,
var ele = $compile(uploadInfo)($scope);
angular.element('.modal-body').append(ele);
任何指令的生效都需要compile,這一步在app啟動的時候angular先幫你做了,
但你插入的html是沒有經過compile這個步驟的,所以你手動compile下即可。
使用ng-repeat出錯:Error: [ngRepeat:dupes]
Error: [ngRepeat:dupes]這個出錯提示具體意思是指數組中有2個以上的相同數字。
ngRepeat不允許collection中存在兩個相同Id的對象

對于數字對象來說,它的id就是它自身的值,因此,數組中是不允許存在兩個相同的數字的。為了規避這個錯誤,需要定義自己的track by表達式。

例如:item in items track by item.id 或者 item in items track by fnCustomId(item)。嫌麻煩的話,直接拿循環的索引變量$index來用item in items track by $index

使用第三方插件或者原生的js修改angular中的model或者view的值時,相應的model或者view的值不會變化,也就是angular的雙向數據綁定失效
angular有自己的一個上下文,所有與angular有關的代碼執行(如雙向數據綁定)都在這個上下文中進行,因此如果你用第三方插件或者原生的js進行操作時,此時代碼是在javascript的上下文中執行,angular無法知道你是否修改model或者view的值,自然也就無法進行雙向數據綁定。解決方案時在操作之后執行$scope.$apply()或者將操作的代碼放在$scope.$apply(function(){//操作的代碼...})
 angular中注入方式有推斷式注入、$inject注入、內聯式注入,當然這三種方式在angular中是等效的,但推斷式注入對于壓縮的 JavaScript 代碼來說是不起作用的,因為壓縮過后的 JavaScript 代碼重命名了函數的參數名。  盡量不要用推斷式注入,最佳是用內聯式注入的方式。

持續更新中...


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜

    大師兄 發表在 痞客邦 留言(0) 人氣()