发送到指令的参数是否有长度限制?这是我的代码:
header = JSON.stringify(header);
columnObj = JSON.stringify(columnObj);
$compile('<div column-filter-sort header=' + header + ' columnobj=' + columnObj + '></div>')(scope);
指令:
a.directive('columnFilterSort', function () {
return {
link: function (scope, elem, attrs) {
var columnObj = JSON.parse(attrs.columnobj);
var header = JSON.parse(attrs.header);
}
});
Var columnObj看起来很好,但在var header = JSON.parse(attrs.header)时失败了; 检查var标头我发现它不完整。我得到的错误是: SyntaxError:意外的输入结束 在Object.parse(native)
请帮忙。
由于
答案 0 :(得分:1)
首先将编译更改为:
$compile('<column-filter-sort header="' + header + '" columnobj="' + columnObj + '"></div>')(scope);
第二个变更指令:
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);
}
});
这应该可以解决问题。 有关详细信息,请查看此帖子 how to pass a json as a string param to a directive
顺便说一句,你也可以在第一个JS部分将JSON传递给全局作用域,并在指令中使用隔离作用域而不使用它。