我正在尝试将字符串传递到我的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 :(得分: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>