[英]Can't get to work a function
我寫了一個非常簡單的函數,其中包含一些Jquery代碼,但由於某些原因我無法使它工作。
我錯過了什么?
HTML
<div ng-app='myApp'>
<div ng-controller="DropdownCtrl">
<p>Here should be five -> </p>
</div>
</div>
JS
var myApp = angular.module('myApp', []);
myApp.controller('MainCtrl', function ($scope) {
$scope.onload = function(scope) {
$('p').each(function(){
$(this).html($(this).html().replace(/ /gi,"5"));
});
};
});
您不應該在控制器中操作DOM,原因有很多,詳見Angular文檔和許多StackOverflow票證。
推薦閱讀:
Angular控制器中沒有load
事件(如果有的話會使用$scope.$on('load',function(){});
調用$scope.$on('load',function(){});
方法)。
您應該在此處使用Angular數據綁定/插值。 這是一個例子:
<p>Here should be five -> {{number}}</p>
而你的控制器:
var myApp = angular.module('myApp', []);
myApp.controller('MainCtrl', function ($scope) {
$scope.number = 5;
});
一些東西:
codepen有錯誤的順序jqueryui和jquery,所以你得到一個錯誤。 此外,控制器被稱為MainCtrl
但在HTML中你有DropdownCtrl
。
至於實際的錯誤:僅僅因為你調用函數onload
並不意味着它實際上在控制器啟動時執行。 把它從這個功能中拿出來它就會按照你的意圖行事。
像這樣:
myApp.controller('MainCtrl', function ($scope) {
$('p').each(function(){
$(this).html($(this).html().replace(/ /gi,"5"));
});
});
雖然這可能適用於此實例,但您不應該在控制器中操作DOM。 Angular控制器的第一條規則是:
“控制器應該只包含業務邏輯。將任何表示邏輯放入控制器會顯着影響其可測試性.Angular在大多數情況下使用數據綁定,並且指令用於封裝手動DOM操作。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.