【问题标题】:How to pass a firebase data into a function如何将firebase数据传递给函数
【发布时间】:2016-05-18 00:38:23
【问题描述】:

我正在尝试将字符串传递给我的 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'));
  }

【问题讨论】:

  • 为什么要将参数“data.title”(已经是字符串)用单引号括起来?您不能在表达式中使用插值,只能在 HTML 模板中使用。试试favorites(data.title)。不确定这是否能解决您的问题,但这是一个良好实践的说明。如果有帮助,请告诉我,我会将其设置为答案。

标签: javascript html angularjs firebase


【解决方案1】:

ngClick 似乎有问题:

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

就目前而言,您将插值表达式 ({{&lt;exp&gt;}}) 封装在一个字符串中:'{{data.title}}',但请尝试像这样传递它,因为只有在将值直接显示到视图时才需要插入:

ng-click="favorites(data.title)"

【讨论】:

    【解决方案2】:

    ng-click 指令需要一个表达式。你传入了一个你认为是插值的字符串。

    您只能在模板中使用插值 ({{ the return value of an expression/variable }}),而不能在表达式中使用。

    所以正确的做法是ng-click="favorites(data.title)"

    在 HTML 模板中使用表达式

    通常,当在 AngularJS 中的 HTML 模板中执行表达式时,您可以像往常一样访问范围变量,而无需 $scope 前缀。

    所以如果在你的控制器中你有这样的东西:

    $scope.title = 'News From Today';

    您可以像这样绑定到它(表达式,对吗?):

    &lt;h1 ng-bind="title"&gt;&lt;/h1&gt;

    或者像这样通过插值:

    &lt;h1&gt;{{ title }}&lt;/h1&gt;

    【讨论】:

    • 谢谢,我正在努力学习 Web 开发,我知道我错过了一些概念,但感谢您彻底解释解决方案 :)
    • @Doopler 祝您在成为 Web 开发人员的道路上好运! :)
    猜你喜欢
    • 2021-04-07
    • 2019-01-24
    • 2020-10-01
    • 2020-03-14
    • 2015-04-20
    • 1970-01-01
    • 2015-12-14
    • 2020-04-05
    相关资源
    最近更新 更多