我正在开发angularJs应用程序,我需要从超链接点击调用角度函数。
这是我的代码
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>
我在vm功能之前尝试$event.preventDefault();
但是没有用。
同样在控制台中我收到错误
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 grid:ui-grid - v3.0.4
:AngularJS v1.4.3
答案 0 :(得分:0)
以下语法错误:
vm.OpenUserProfilePage({{row.entity[\"USERID\"]}})
在您的单元格模板中。应该是:
vm.OpenUserProfilePage(row.entity[\"USERID\"])
因为您无法将角度表达式与角度插值混合。例如,您无法执行以下操作:
<div ng-show="5 + {{myNumber}} === 8">
因为ng-show需要一个角度表达式:
<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)'