Как исправить синтаксическую ошибку для атрибута компонента AngularJS?


Привет я использую этот компонент в качестве datetimepicker: https://dalelotts.github.io/angular-bootstrap-datetimepicker/

У меня есть несколько полей даты, созданных во время выполнения, и этот компонент должен ссылаться на имя поля, как показано в коде ниже

<datetimepicker 
    ng-model="param.DefaultValues[0]" 
    datetimepicker-config="{ dropdownSelector: '#{{param.Name}}' }" />

Но я получаю ошибку от angular.js после выбора даты :

Введите описание изображения здесь

Я только спрашиваю об этом синтаксисе, как его исправить?

Полный кусок код такой:

Введите описание изображения здесь

Обновить

Извините, ребята, вы все предложили один и тот же синтаксис,

datetimepicker-config="{ dropdownSelector: '#' + {{ param.Name }} }"

Но это не сработало, ломается сразу же, когда я открываю страницу:

Ошибка: [$синтаксического анализа:синтаксическая] синтаксическая ошибка: маркер '{' неверный ключ в колонке 28 выражения [{ dropdownSelector: '# ' + {{ param.Name }} }] начиная с [{ param.Name }} }].

Я думаю, что здесь отсутствует заключительная одинарная цитата...

3 2

3 ответа:

Двойная фигурная скобка {{ }} интерполяция работает с атрибутом id, потому что$compile service выполняет интерполяцию привязки к собственному HTML-атрибуту. Атрибут datetimepicker-config является атрибутом компонента AngularJS, который оценивается какУгловое выражение .

Не используйте интерполяцию {{ }} внутри угловых выражений.

<!-- DONT interpolate in Angular Expressions 
<datetimepicker 
    ng-model="param.DefaultValues[0]" 
    datetimepicker-config="{ dropdownSelector: '#{{param.Name}}' }" />
-->

<!-- INSTEAD -->
<datetimepicker 
    ng-model="param.DefaultValues[0]" 
    datetimepicker-config="{ dropdownSelector: '#' + param.Name }" />

внутри каких угловых выражений? двойные фигурные скобки {{}} - это угловое выражение. значение атрибут datetimepicker-config не имеет ничего общего с angular, это просто объект JS{}

Атрибут datetimepicker-config вычисляется с односторонней привязкой <. Это не оценивается как простой объект JavaScript. Вычисляется Угловое выражение . Двойные фигурные скобки привязка интерполяции DOM. двойные скобки Керли {{ }} не являются законным синтаксисом внутри угловых выражений.

Для получения дополнительной информации см.:

Синтаксическая ошибка: маркер ' {'недопустимый ключ в столбце 28 выражения { dropdownSelector: '#' + {{ param.Name }} }, начинающийся с { param.Name }} }

Ошибка: $parse: синтаксис

Синтаксическая Ошибка

Описание

Возникает при наличии синтаксической ошибки в выражении. Эти ошибки возникают при компиляции выражения. Сообщение об ошибке содержит более точное описание ошибки, включая расположение (столбец) в выражении, где произошла ошибка.

Чтобы решить эту проблему, узнайте больше о выражениях AngularJS, определите ошибку и исправьте синтаксис выражения.

- Ссылка На Ошибку AngularJS - $parse: синтаксис

Как сказано в документации, dropdownSelector ожидает строку. Поэтому вам придется объединить:

<datetimepicker 
    ng-model="param.DefaultValues[0]" 
    datetimepicker-config="{ dropdownSelector: '#' + param.Name }" />

Исправить на

<datetimepicker 
data-ng-model="data.embeddedDate" 
datetimepicker-config="{ dropdownSelector: '#' + {{ param.Name }} }" />

Добавить data-ng-model="данные.embeddedDate " в вашу ng-модель