Как передать данные из базы данных в функцию

0

Я пытаюсь передать строку в функцию, которая находится в моем файле javascript

Переменная {{data.title}} доступна в другом месте в моем html файле, но кажется, что мне что-то не хватает, потому что функция не получает переменную как '

        <a class="item item-icon-left" ng-click="favorites('{{data.title}}')">
                <i class="icon ion-ios-star-outline"></i>
                <span>Add to favorites</span>
        </a>

Файл JS:

  $scope.favorites = function (x) {
    console.log(x);
    // retrieve it (Or create a blank array if there isn't any info saved yet),
    var favorites = JSON.parse(localStorage.getItem('favoritesInfo')) || [];;
    // add to it,
   favorites.push({ name: x});
    // then put it back.
    localStorage.setItem('favoritesInfo', JSON.stringify(favorites));
    console.log(localStorage.getItem('favoritesInfo'));
  }
  • 0
    Зачем вам заключать параметр "data.title" (который уже является строкой) в одинарные кавычки? Вы не можете использовать интерполяцию внутри выражений, только внутри шаблонов HTML. Попробуйте favorites(data.title) . Не уверен, решит ли это вашу проблему, но это примечание для хорошей практики. Если это помогло, дайте мне знать, и я установлю это как ответ.
Теги:
firebase

2 ответа

1
Лучший ответ

Директива ng-click ожидает выражения. Вы прошли в строке с тем, что вы считали интерполяцией.

Вы можете использовать интерполяцию ({{ the return value of an expression/variable }}) в шаблонах, а не в выражениях.

Поэтому правильная вещь - ng-click="favorites(data.title)".

Использование выражений в HTML-шаблонах

Как правило, при выполнении выражений внутри HTML-шаблона в AngularJS вы можете получить доступ к переменным области видимости, как обычно, без префикса $scope.

Поэтому, если в вашем контроллере есть что-то вроде этого:

$scope.title= 'News From Today';

Вы можете привязать к нему (выражения, правильно?) Так:

<h1 ng-bind="title"></h1>

Или с помощью интерполяции:

<h1>{{ title }}</h1>

  • 0
    Спасибо, я потихоньку пытаюсь научиться веб-разработке, и я знал, что мне не хватает какой-то концепции, но спасибо за подробное объяснение решения :)
  • 0
    @Doopler Удачи на вашем пути в качестве веб-разработчика! :)
2

Кажется, что проблема с ngClick:

ng-click="favorites('{{data.title}}')"

Как бы то ни было, вы помещаете интерполированное выражение ({{<exp>}}) в строку: '{{data.title}}', но попробуйте просто передать его так, так как inteprolation требуется только при отображении значения прямо к виду:

ng-click="favorites(data.title)"
  • 0
    Спасибо большое люкс

Ещё вопросы

Сообщество Overcoder
Наверх
Меню