2016-07-08 36 views
1

我正在angularJs應用程序,我需要從超鏈接單擊調用角功能。從angualr網格列定義調用角功能

這裏是我的代碼

vm.gridOptions = { 
     data: [], 
     enableHorizontalScrollbar: 0, 

     columnDefs: [ 
      { 
       field: "LASTNAME", 
       displayName: "Last Name", 
       cellTemplate: "<div><a href='#' data-ng-click='vm.OpenUserProfilePage({{row.entity[\"USERID\"]}})'>{{row.entity[col.field]}}</a></div>" 
      }, 
      { field: "FIRSTNAME", displayName: "First Name" } 
     ] 
    }; 

    vm.getEncryptedUserId = function (userId) 
    { 
     AdminManageService.getUserIdEncryptedText(userId).then(function (encryptedText) 
     { 
      return encryptedText; 
     }); 
    } 

    vm.OpenUserProfilePage = function(userId) { 
     window.location = "/UserProfile.aspx?enkey=" + vm.getEncryptedUserId(userId); 
    } 

它正在HTML

<a href="#" data-ng-click="vm.OpenUserProfilePage(89)" class="ng-binding">CHW</a> 

正確渲染我試過$event.preventDefault();太VM功能之前,但沒有奏效。

而且在控制檯我得到錯誤

Error: [$parse:syntax] http://errors.angularjs.org/1.4.3/$parse/syntax?p0=%7B&p1=invalid%20key&p2=…w.entity%5B%22USERID%22%5D%7D%7D)&p4=%7Brow.entity%5B%22USERID%22%5D%7D%7D) 

點擊它甚至不會OpenUserProfilePage方法

我使用的UI格:ui-grid - v3.0.4有角版本:AngularJS v1.4.3

回答

0

以下語法是錯誤的:

vm.OpenUserProfilePage({{row.entity[\"USERID\"]}}) 

在您的單元格模板中。它應該是:

vm.OpenUserProfilePage(row.entity[\"USERID\"]) 

因爲您不能將角度表達式與角度插值混合使用。例如,你不能做到以下幾點:

<div ng-show="5 + {{myNumber}} === 8"> 

因爲NG出現預期的角度表達:

<div ng-show="5 + myNumber === 8"> 

如果你想顯示是/否在此基礎上的布爾表達式:

<div>{{(5 + myNumber === 8) ? "True" : "No"}}</div> 

您必須使用grid.appScope來訪問您的應用程序的範圍。你是不是通過不提供更多的JS和你的HTML,但如果我做一些合理的假設,你必須做的是有益的:

data-ng-click='grid.appScope.vm.OpenUserProfilePage(row.entity.USERID)' 
+0

它解決了控制檯錯誤,但HTML所呈現的數據-NG-點擊=」 vm.OpenUserProfilePage(row.entity [「USERID」])「 – Mahajan344

+0

仍然不能正常工作 – Mahajan344

+0

@ Mahajan344有太多的未知數。我不知道你是否正在使用ng-grid或ui-grid。我不知道什麼版本。也許你應該提供一個jsfiddle呢? – mostruash