2015-12-28 4 views
1

Есть ли предел длины для параметра, который отправляется в директиву? Вот мой код:Ограничение длины параметра угловой директивы

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 выглядит хорошо, но она не в вар заголовок = JSON.parse (attrs.header); Проверка заголовка var Я вижу, что он не является полным. Ошибка, которую я получаю: SyntaxError: Неожиданный конец ввода у объекта Object.parse

Пожалуйста, помогите.

Благодаря

ответ

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

Кстати, вы можете также передать JSON в глобальной области видимости в первой секции JS и потребляют его без использования рамки изоляции в директиве.

+0

Вы должны действительно объяснить, ПОЧЕМУ, что работает. – Marie

+0

Причина, из-за которой компиляция должна обернуть json кавычкой. и трюк состоял в том, чтобы передать json в область изоляции в директиве с двойным связыванием вместо использования атрибутов. @Toni спасибо за отзыв –

+0

Я не уверен, но теперь он даже не попадает в директиву. – Mark

Смежные вопросы