Angular指令参数长度限制
Angular指令参数长度限制
参数发送到指令时是否有长度限制?这是我的代码:
header = JSON.stringify(header); columnObj = JSON.stringify(columnObj); $compile('')(scope);
指令:
a.directive('columnFilterSort', function () { return { link: function (scope, elem, attrs) { var columnObj = JSON.parse(attrs.columnobj); var header = JSON.parse(attrs.header); } });
columnObj变量看起来没问题,但在var header = JSON.parse(attrs.header)处出错。
检查var header,我发现它不完整。我得到的错误是:
SyntaxError: Unexpected end of input
at Object.parse (native)
请帮忙,谢谢。
Angular指令参数长度限制的问题是由于传递的参数过长导致的。解决方法是通过修改编译和指令来解决。
首先,将编译修改为:
$compile('
然后,将指令修改为:
a.directive('columnFilterSort', function () { return { restrict: 'E', scope: { 'header' : '=', 'columnobj' : '=' }, link: function (scope, elem, attrs) { var columnObj = JSON.parse(scope.columnobj); var header = JSON.parse(scope.header); } });
这样就可以解决问题了。更多详情请参考这篇文章:
[https://stackoverflow.com/questions/14687822](https://stackoverflow.com/questions/14687822)
另外,你也可以在第一个JS部分将JSON传递给全局作用域,然后在指令中使用,而不使用隔离作用域。
这个解决方法的原因是编译需要用引号将JSON包裹起来。通过在指令中使用双向绑定,将JSON传递给隔离作用域,而不是使用属性。
如果你不使用隔离作用域,可能会导致无法进入指令的问题。
还有一个错误是Error: [$parse:ueoe],请检查最后一次编辑中将column-filter-sort放置在元素中,因为指令中限制了这一点。
如果你将编译修改为$compile('
只有在注释掉隔离作用域时,才能进入指令。
请问你在哪里使用编译?你能提供相关代码吗?