文章出處
文章列表
問題描述
|
解決方案
|
當你簡單的動態給頁面插入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出錯:
|
ngRepeat不允許collection中存在兩個相同Id的對象 對于數字對象來說,它的id就是它自身的值,因此,數組中是不允許存在兩個相同的數字的。為了規避這個錯誤,需要定義自己的track by表達式。 例如: |
使用第三方插件或者原生的js修改angular中的model或者view的值時,相應的model或者view的值不會變化,也就是angular的雙向數據綁定失效
|
angular有自己的一個上下文,所有與angular有關的代碼執行(如雙向數據綁定)都在這個上下文中進行,因此如果你用第三方插件或者原生的js進行操作時,此時代碼是在javascript的上下文中執行,angular無法知道你是否修改model或者view的值,自然也就無法進行雙向數據綁定。解決方案時在操作之后執行$scope.$apply()或者將操作的代碼放在$scope.$apply(function(){//操作的代碼...}) |
angular中注入方式有推斷式注入、$inject注入、內聯式注入,當然這三種方式在angular中是等效的,但推斷式注入對于壓縮的 JavaScript 代碼來說是不起作用的,因為壓縮過后的 JavaScript 代碼重命名了函數的參數名。 | 盡量不要用推斷式注入,最佳是用內聯式注入的方式。 |
持續更新中...
文章列表
全站熱搜