角度摘要 - TypeError:v12不是函数

时间:2018-03-16 10:15:15

标签: angularjs angular-ng-if angular-digest

我在项目中使用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>

1 个答案:

答案 0 :(得分:0)

我发现了什么错,它是传递给指令的参数中使用的符号。

我用过

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