Angular digest - TypeError: v12 is not a function

Angular digest - TypeError: v12 is not a function

我在项目中使用 AngularJs 1。我注意到有时我会收到错误

TypeError: v12 is not a function. (In 'v12(v16)', 'v12' is false)
fn
$digest — angular.js:18363
$apply — angular.js:18640
done — angular.js:12618
completeRequest — angular.js:12862
requestLoaded — angular.js:12779
undefined
(funzione anonima) — angular.js:11209
(funzione anonima) — angulartics.js:425
$digest — angular.js:18389
$apply — angular.js:18640
done — angular.js:12618
completeRequest — angular.js:12862
requestLoaded — angular.js:12779
angular.js:11209

在控制台中,我不明白它与什么有关。


我不知道它是否相关,但有些 ng-if 不起作用(只是一些)。

这很奇怪,因为代码

<div ng-if="isAdmin">Am I Admin? {{isAdmin}}</div>

显示

Am I Admin? false

更多详情

该代码包含在自定义指令的模板中

.directive('myDirective', function() {   return {
    replace    : true,
    restrict   : 'E',
    scope      :
      {
          /* -------
           &    : function
           @    : 1-way
           =    : 2-ways
          ---------*/
          isAdmin          : '@'

用法如下

<my-directive  is-admin="{{ctrl.isAdmin}}">
</my-directive>

我发现问题了,是传递给指令的参数中使用的符号。

我用过

// directive spec
.directive('myDirective', function() {   return {
    scope      :
      {  isAdmin : '@' }

// directive usage
<my-directive  is-admin="{{ctrl.isAdmin}}">
</my-directive>

但正确的方法是

// directive spec
.directive('myDirective', function() {   return {
    scope      :
      {  isAdmin : '=' }

// directive usage
<my-directive  is-admin="ctrl.isAdmin">
</my-directive>

因为 @ 是 1 种方式,而 = 是 2 种方式。所以我想使用 @ 布尔值被转换成一个字符串。使用 = 一切正常。顺便说一句,我真的不知道为什么会出现那个奇怪的错误 TypeError: v12 is not a function. (In 'v12(v16)', 'v12' is false)