通过参数将 mongo 文档 ID 传递给角度指令函数会抛出解析错误
passing mongo doc id via param to angular directive function throws parse error
var app = angular.module('my-app', [], function () {
});
app.controller('AppController', function () {
});
app.directive('copyMe', function () {
return {
restrict: 'EA',
replace:true,
scope:{wid:'='},
template: '<div ng-click="copy()">Copy me</div>',
link: function compile(scope, element, attrs ) {
scope.copy = function(){
alert( attrs.wid );
};
}
};
});
<!DOCTYPE html>
<html>
<head>
<script src="https://rawgit.com/angular/bower-angular/master/angular.min.js"></script>
<meta charset="utf-8">
</head>
<body ng-app="my-app" ng-controller="AppController">
<copy-me wid="'1dfvdfv23'"></copy-me>
<copy-me wid="2"></copy-me>
<copy-me wid="3"></copy-me>
</body>
</html>
一个简单的 ang 指令。我需要在我的 ang 应用程序中的许多地方重用复制我功能。问题是,它的实际应用是"wid"实际上是一个mongo文档ID,它是字母和数字的组合。
出于某种原因,当我将 mongo id 作为"wid"角传递时会抛出解析错误。
当我用单引号括起来传递 id 时,它不会抛出解析错误,但确实在字符串中包含单引号。
单击不同的文本以查看何时运行代码段。我知道我可以去掉单引号,但这似乎是错误的。
有没有一种官方方法可以通过这种方式通过指令传递多字符字符串?
还有一个jsfiddle链接:https://jsbin.com/bajulepewi/edit?html,js,output
范围 wid 属性应为 @,而不是 =。 = 表示双向数据绑定 (https://docs.angularjs.org/api/ng/service/$compile#directive-definition-object(,因此您放在属性上的值应该是 ng 将读取和写入的作用域或控制器上的属性名称。第一个示例出现解析错误,因为它不是有效的属性名称,而其他两个是有效的。如果删除第一个值的第一个字符,它应该"有效"。但是,您的问题表明您确实想使用 @(单向绑定(,因为您可能不想更改指令中的 mongo doc ID。
相关文章:
- 从html创建一个指令,该指令按类名应用函数
- AngularJS指令单元测试中未定义的函数
- AngularJS指令部分应用的函数don'不起作用
- 角度指令's链接函数未被调用
- Angular,从指令控制器中的控制器触发函数
- 如何在指令链接函数中使用从控制器传递的筛选器
- 角度指令控制器:参数不是函数,未定义
- 在 Angular 指令中,如何进行回调,其中函数名称位于父范围的变量中
- 通过指令在控制器中执行javascript函数
- AngularJS执行指令模板中的控制器函数
- ng-click指令没有调用整个函数
- 从指令链接函数监视控制器作用域
- 当指令中已经给定作用域时,如何访问控制器中声明的函数
- AngularJS:如何调用指令中定义的函数'控制器的作用域
- 在不使用隔离作用域的情况下执行函数的角度指令
- 在 Angular 指令中定义一个用于 ng-click 的函数
- 列表中项的动态单击函数指令.快到了
- 调用链接函数指令Angular 1 ES6
- 如何从编译器函数指令访问作用域
- 检查angular中链接函数指令中孤立作用域变量的值