【问题标题】:Angular directive parameter length limitAngular 指令参数长度限制
【发布时间】:2015-12-28 20:54:41
【问题描述】:

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

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 header 我发现它不完整。我得到的错误是: SyntaxError:输入意外结束 在 Object.parse(本机)

请帮忙。

谢谢

【问题讨论】:

    标签: javascript json angularjs-directive


    【解决方案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 传递到全局范围并使用它,而无需在指令中使用隔离范围。

    【讨论】:

    • 之所以行得通,是因为编译需要将json用引号括起来。诀窍是使用双重绑定而不是使用属性将 json 传递到指令的隔离范围。 @Toni 感谢您的反馈
    • 我不确定,但现在它甚至没有进入指令。
    • 错误是 Error: [$parse:ueoe] errors.angularjs.org/1.4.7/$parse/ueoe?p0=%7B at Error (native)
    • 请检查我对将 column-filter-sort 作为元素放置的最后编辑,因为在指令中限制了它
    • 我已经把我的编译改成了这个 $compile('排序>')(范围);
    猜你喜欢
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多