如何将firebase数据传递给函数

时间:2016-05-18 00:38:24

标签: javascript html angularjs firebase

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

2 个答案:

答案 0 :(得分:2)

ngClick似乎存在问题:

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

就目前而言,你将插值表达式({{<exp>}})包含在一个字符串:'{{data.title}}'中,但尝试只是这样传递它,因为只有在直接向值显示值时才需要进行提升。视图:

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

答案 1 :(得分:1)

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

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

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

在HTML模板中使用表达式

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

因此,如果你的控制器中有这样的东西:

$scope.title = 'News From Today';

你可以这样绑定它(表达式,对吧?):

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

或通过插值如此:

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