【问题标题】:Angular js Error: $parse:syntax Syntax ErrorAngular js 错误:$parse:syntax 语法错误
【发布时间】:2018-07-11 10:57:07
【问题描述】:

var app=angular.module('myapp',[])
app.controller('myctrl',Myfunction);

function Myfunction($scope,$compile){
  var self=this;
  
  $scope.text=s4();
  $scope.adding=function(){
       		var divElement = angular.element($("#exampleId"));
					var appendHtml = $compile('<textarea-dir id-dire="'+s4()+'"></textarea-dir>')($scope);
					divElement.append(appendHtml);
					
					
					var writeelem = angular.element($("#output_from_textarea"));
					var appendelem = $compile('<example-listen></example-listen>')($scope);
					writeelem.append(appendelem);
  };
  
  
      function s4() {
      return Math.floor((1 + Math.random()) * 0x10000)
       .toString(16).substring(1);
                    }
  
}


app.directive('textareaDir',Mydire);

function Mydire($rootScope){
   return{
     scope:{
       direid:"=idDire"
     },
     template:'<textarea class="form-control {{direid}}txt"></textarea>',
     link:function(scope,elem,attrs){
       elem.bind('keypress',function(){
         console.log('pressed');
         $rootScope.$broadcast("valuetextbox","valuehere");
       });
     }
   }
}

app.directive('exampleListen',listenme);
function listenme($rootScope){
   return{
     scope:{
     },
     template:'<p>text</p>',
     link:function(scope,elem,attrs){
        $rootScope.$on("valuetextbox", function(message){
            console.log(message);
        });
        
     }
   }
}
<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="style.css">
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.10/angular.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js"></script>
    <script src="script.js"></script>
    <script src="textbox_directive.js"></script>
  </head>
  <body ng-app="myapp">
    <div  ng-controller="myctrl">
      
      <button ng-click="adding()">Addtextarea</button>
      

      <div id="exampleId">
        
      </div>
      
      <div id="output_from_textarea">
      </div>
      
    </div>
  </body>

</html>

我正在尝试添加一个带有类 '2b90txt' 的指令并从文本框获取值

我的计划是将指令和输出添加到 value

这里是代码

    app.directive('textareaDir',Mydire);

    function Mydire(){
       return{
         scope:{
           direid:"=idDire"
         },
         template:'<textarea class="form-control {{direid}}txt"></textarea>',
         link:function(scope,elem,attrs){
           elem.bind('keypress',function(){
             console.log('pressed');
           });
         }
       }
    }'

语法错误:标记“b90”是表达式 [2b90] 的第 2 列中的意外标记,从 [b90"] 开始。

我正在使用此代码附加指令

    var divElement = angular.element($("#exampleId"));
    var appendHtml = $compile('<textarea-dir id-dire="'+s4()+'"></textarea-dir>')($scope);
    divElement.append(appendHtml);

【问题讨论】:

  • 你的木板工作正常
  • Drag13 错误在控制台
  • 勾选这个函数,有时会返回意想不到的结果+s4()+

标签: javascript angularjs-directive


【解决方案1】:

你的问题就在这里。您尝试使用 +s4() 将 s4 结果转换为数字,这有时会返回对 Angular 无效的 NaN

function s4() {
  const t = Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
  return t;
}

console.log(s4());

for (var i = 0; i < 10; i++) {
 const t = s4();
 console.log(`result: ${t}, converted to: ${+t}`);

}

【讨论】:

  • 尝试使用 concat 仍然是相同的任何 sugestions,我更新了代码
  • @aasqwasdqwdqwd 当然,问题是您尝试将数字转换为数字。无论您如何尝试,这都是不可能的。你的功能的想法是什么?
猜你喜欢
  • 2015-11-23
  • 1970-01-01
  • 2015-05-28
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多