角度指令参数长度限制

时间:2015-12-28 20:54:41

标签: javascript json angularjs-directive

发送到指令的参数是否有长度限制?这是我的代码:

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)

请帮忙。

由于

1 个答案:

答案 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传递给全局作用域,并在指令中使用隔离作用域而不使用它。