Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么未调用“controller.$render”重写?_Javascript_Angularjs - Fatal编程技术网

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()