Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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
Angularjs NgModelController$parsers和$formatters不';t使用$render和$viewValue_Angularjs_Angularjs Directive_Language Concepts - Fatal编程技术网

Angularjs NgModelController$parsers和$formatters不';t使用$render和$viewValue

Angularjs NgModelController$parsers和$formatters不';t使用$render和$viewValue,angularjs,angularjs-directive,language-concepts,Angularjs,Angularjs Directive,Language Concepts,我正试图理解和的$formatters和$parser 我已经创造了,但有几个问题需要澄清 下面是我的主要代码 <body ng-app="app"> <input type="text" ng-model="what" placeholder="directive Value" custom-formatter> <input type="text" ng-model="what" placeholder="model value" > change val

我正试图理解和的$formatters和$parser

我已经创造了,但有几个问题需要澄清

下面是我的主要代码

<body ng-app="app">
<input type="text" ng-model="what" placeholder="directive Value" custom-formatter>
<input type="text" ng-model="what" placeholder="model value" >
change value {{ what }}
</body>
下面是我的几点困惑和理解,如果我错了,请纠正我

  • 在我对当前情景的理解中
  • 范围值(即,在带有自定义指令输入框的ng模型中)发生了一些变化,而不是意味着viewValue发生了变化

    若输入框中的某些内容发生了变化,但并没有自定义指令,但ng模型相同,则表示modelValue发生了变化

    是这样吗

  • 当范围在自定义指令中设置为隔离的
    {}
    时,为什么更改会反映到具有相同
    ng model
    值的其他输入框

    因为我们在自定义指令中添加了
    require:'ngModel'

  • 是这样吗

  • 我们什么时候需要调用$render?据
  • 当视图需要更新时调用它

    如此努力

    ngModelCtrl.$render = function () {
            console.log('render called');
            console.log(ngModelCtrl.$viewValue;) // this gives UPPERCASE text
    };
    
    但是输出(另一个文本框和{{expression}})不显示大写值:(

    它需要打电话给它吗

    “更新视图值”

    但是怎么打,在哪里打?我试过了

    ngModelCtrl.$render = function () {
            console.log('render called');
            ngModelCtrl.$setViewValue({what : scope.what }) << doesn't work
            console.log(ngModelCtrl.$viewValue;) // this gives UPPERCASE text
    };
    
    即使这从来没有被称为,为什么呢


    请告诉我何时使用$watch以及何时将$render$viewValue$setViewValue一起使用以及如何使用。

    无人解释:(无人解释:(
    ngModelCtrl.$render = function () {
            console.log('render called');
            ngModelCtrl.$setViewValue({what : scope.what }) << doesn't work
            console.log(ngModelCtrl.$viewValue;) // this gives UPPERCASE text
    };
    
     scope.$watch('what', function() {
        console.log('watcher called');
          ngModelCtrl.$setViewValue({
              what : scope.what
          });
     });