AngularJS - 如何在收件箱中获取未转义的值

时间:2015-03-31 09:54:31

标签: javascript html angularjs

修改 实际上,我从后端日志服务器及其json格式中检索日志。某些键可能具有特殊性。然后我尝试使用AngularJS在UI中呈现这些日志数据。

发生了什么?

  1. 原始日志json数据是正确的,例如" you & me"
  2. 使用<span>{{data}}</span>时,它变为&#34; you &amp; me&#34;在UI中,默认情况下由$ sce引起,$ sce已启用。
  3. 更改为<span ng-bind-html="data"></span>,按预期显示 - "you & me"
  4. 还有另一个收件箱,我想获取用户点击的原始数据。我使用了<input type="checkbox" ... ng-checked="verify_enabled(data)" />,但在函数verify_enabled中,传递的参数变为转义数据 - "you &amp; me"
  5. 在angularJs中,有一些特殊字符,例如&#34; &amp;,&lt;,&gt; &#34;将在html中显示时进行转义。

        "&" -> "&amp;",
        "<" -> "&lt;",
        ">" -> "&gt;",
    

    $sce引起的AngularJs的事情。

    例如,有一个角色&amp;在原始原始数据中 - controller.js的$ scope.data。

    然后在html中,

       <span>{{data}}</span> 
       //{{}} the bind will escape it from '&' to "&amp;"
    

    我在span中使用ng-bind-html找到了这种方法:

    <span ng-bind-html="data"></span>
    // this will output raw &
    

    好消息 - 它运作良好并按预期显示。

    但对于<input>元素,没有内部HTML,ng-bind-html无法正常工作。 例如:

    // raw data in $scope.data = "you & me";
    <input  type="checkbox"   
          id="{{data}}_id"
          value="{{data}}"
          ng-checked="verify_enabled(data)"
          ng-click="toggle_enabled(data)" /> 
    // the {{data}} will be escaped to "you &amp; me"
    

    在controller.js中,传递的参数&#39;数据&#39;功能verify_enabled和toggle_enabled。该值将变为&amp;

    问题:我想要的是在controller.js中获取原始未转义字符。

    这是一个例子,但它并没有像我描述的那样工作。仅供参考。

    &#13;
    &#13;
    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Example - example-checkbox-input-directive-production</title>
    
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script>
    
      
    </head>
    <body ng-app="checkboxExample">
      <script>
      angular.module('checkboxExample', [])
        .controller('ExampleController', ['$scope', function($scope) {
         
         $scope.datas = [{msg:'hello karl'},
                         {msg:'ok fine'},
                         {msg:'you & me'},
                          {msg:'special character: < > '}];
           
         $scope.verify_filter_enabled = function (data)  {
           console.log('data is ' + data);
         };
         
         $scope.toggle_filter_enabled = function (data)  {
           console.log('data is ' + data);
         };
         
        }]);
    </script>
    
    <div ng-controller="ExampleController" >
      
     <div  ng-repeat="data in datas">
     <span ng-bind-html="data.msg"></span>
     <span>{{data.msg}}</span>
    
     <input  type="checkbox"   
          id="{{data.msg}}_id"
          value="{{data.msg}}"
          ng-checked="verify_filter_enabled(data.msg)"
          ng-click="toggle_filter_enabled(data.msg)" /> 
    
     </div>
     
     </div>
    </body>
    </html>
    &#13;
    &#13;
    &#13;

0 个答案:

没有答案