Javascript 为什么未调用“controller.$render”重写?
看看这个代码@。在Javascript 为什么未调用“controller.$render”重写?,javascript,angularjs,Javascript,Angularjs,看看这个代码@。在指令的链接函数中,调用了控制器.$render(),效果良好。问题是当我覆盖controller.$render函数时,它不会运行console.log('overrided$render function called')不会出现在控制台中 script.js是: var app = angular.module('myApp', []); app.directive('test', function () { return { require: '
指令的链接函数中,调用了控制器.$render()
,效果良好。问题是当我覆盖controller.$render
函数时,它不会运行<代码>console.log('overrided$render function called')代码>不会出现在控制台中
script.js
是:
var app = angular.module('myApp', []);
app.directive('test', function () {
return {
require: '?ngModel',
link: function ($scope, $element, $attr, controller) {
if (!controller) {
console.log("controller of ngModel not found");
return;
} else {
console.log("controller of ngModel found");
controller.$setViewValue('qwerty');
//controller.$render();
controller.$render = function(){
console.log('overridden $render function called');
}
}
}
};
});
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div>TODO write content </div>
<input test type="text" ng-model="name" >
<h1>name: {{name}}</h1>
</body>
</html>
index.html
是:
var app = angular.module('myApp', []);
app.directive('test', function () {
return {
require: '?ngModel',
link: function ($scope, $element, $attr, controller) {
if (!controller) {
console.log("controller of ngModel not found");
return;
} else {
console.log("controller of ngModel found");
controller.$setViewValue('qwerty');
//controller.$render();
controller.$render = function(){
console.log('overridden $render function called');
}
}
}
};
});
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div>TODO write content </div>
<input test type="text" ng-model="name" >
<h1>name: {{name}}</h1>
</body>
</html>
TODO写入内容
名称:{{name}
覆盖控制器后,立即尝试调用控制器$render()
:
var app = angular.module('myApp', []);
app.directive('test', function () {
return {
require: '?ngModel',
link: function ($scope, $element, $attr, controller) {
if (!controller) {
console.log("controller of ngModel not found");
return;
} else {
console.log("controller of ngModel found");
controller.$setViewValue('qwerty');
//controller.$render();
controller.$render = function(){
console.log('overridden $render function called');
}
controller.$render();
}
}
};
});
您需要调用controller.$render()当然是在控制器之后。$render=function(){