2015-03-06 15 views
5

Im làm Angularjs mã và có một lỗi lạ:Angularjs: khung mất tích trong thuộc tính

"Lỗi: [$ phân tích cú pháp: cú pháp] Cú pháp Lỗi: Mã '{' chìa khóa không hợp lệ ở cột 2 của biểu thức [{{ asset.sn}}] bắt đầu tại [{asset.sn}}] http://errors.angularjs.org/1.3.11/ $ parse/syntax? p0 =% 7B & p1 = invalid% 20key & p2 = 2 & p3 =% 7B% 7Basset.sn% 7D% 7D & p4 =% 7Basset.sn% 7D% 7D minErr/< @http://localhost:8000/app/vendor/angular/angular.js:63:12

gì nó có nghĩa và lý do tại sao nó displyed?

đang

HTML: Mã

<table class="table" ng-table="tableParams" show-filter="false" ng-class="{loadingtable : loading}" ng-show="showResults"> 
       <tbody> 
        <tr ng-repeat="asset in assets"> 
         <td class="col-md-4" data-title="'Serial Number'" header-class="text-left" search-word-marker param="{{asset.sn}}"></td> 
         <td class="col-md-4" data-title="'Asset Name'" accesskey="" header-class="text-left" search-word-marker param="{{asset.asset_name}}"></td> 
         <td class="col-md-2" data-title="'Asset Type'" header-class="text-left">{{asset.asset_type}}</td> 
         <td class="col-md-2" data-title="'Tags'" header-class="text-left">{{asset.tags}}</td> 
         <td class="col-md-1"> 
          <div class="btn-group"> 
           <span> 
            <button type="button" class="btn btn-sm btn-primary" ng-click="viewAsset(asset.sn);">{{'VIEW' | translate}}</button> 
           </span> 
          </div> 
         </td> 
        </tr> 
       </tbody> 
      </table> 

CHỈ:

Application.Directives.directive('searchWordMarker', ['$log', '$rootScope', function ($log, $rootScope) { 
    return { 
     restrict: 'A', 
     scope: { 
      param: '=' 
     }, 
     //template: "{{myNewString}}", 
     //replace: false, 
     link: function (scope, el, attr) { 

      var myString = attr.param; 

      var searchWord = $rootScope.searchWord; 

      var regex = new RegExp(searchWord, "g"); 
      var myNewString = myString.replace(regex, "<B>" + searchWord + "</B>"); 


      el[0].innerHTML = myNewString; 


     } 
    } 
}]); 
+0

'tìm kiếm-word-marker param = "asset.sn" 'bạn không cần phải cung cấp cho các {{}} –

+0

Nó không phải là làm việc: nó lấy "asset.sn" như là văn bản bình thường và nó được hiển thị dưới dạng văn bản: asset.sn. –

Trả lời

10

Bạn đang cố gắng để làm một 2 chiều ràng buộc (param : "=") với những gì được viết bằng param, nhưng đó không phải là một đối tượng hoặc một biến, đó là một biểu thức. Hoặc là mất {{}} hoặc thay đổi scope.param bạn ràng buộc là một chuỗi:

scope: { 
    param: '@' 
}, 
+0

Cảm ơn nó hoạt động :). Tại sao tôi không thể làm 2 cách ràng buộc ... {{asset.sn}} có vẻ là (tạm thời) biến.? –

+1

@ P.K. Liên kết 2 chiều hoạt động khi bạn có thể liên kết với một biến/đối tượng .. {{}} là một biểu thức và không thể được liên kết với. {{asset.sn}} chỉ đánh giá một chuỗi vào cuối ngày. –

+0

Đây là những gì tôi đang tìm kiếm ... trong 3 giờ, nhờ @OmriAharon :) –

1
<table class="table" ng-table="tableParams" show-filter="false" ng-class="{loadingtable : loading}" ng-show="showResults"> 
      <tbody> 
       <tr ng-repeat="asset in assets"> 
        <td class="col-md-4" data-title="'Serial Number'" header-class="text-left" search-word-marker param="asset.sn"></td> 
        <td class="col-md-4" data-title="'Asset Name'" accesskey="" header-class="text-left" search-word-marker param="asset.asset_name"></td> 
        <td class="col-md-2" data-title="'Asset Type'" header-class="text-left">{{asset.asset_type}}</td> 
        <td class="col-md-2" data-title="'Tags'" header-class="text-left">{{asset.tags}}</td> 
        <td class="col-md-1"> 
         <div class="btn-group"> 
          <span> 
           <button type="button" class="btn btn-sm btn-primary" ng-click="viewAsset(asset.sn);">{{'VIEW' | translate}}</button> 
          </span> 
         </div> 
        </td> 
       </tr> 
      </tbody> 
     </table> 
Các vấn đề liên quan