函数参数在ng-click中未定义

时间:2016-12-22 20:39:26

标签: javascript angularjs

我已经检查了其他问题,但我没有解决这个问题。

以下是我的完整代码:http://codepen.io/tiuscia/pen/qqLQNd

我在控制器中有一个函数,我调用的是输入文本的参数和最近链接的参数。

这些链接在ng-repeat中,他们使用ng-click调用函数:

HTML

 <h3>Search History:</h3>

 <div ng-repeat="city in meteo.cityList" >
     <a ng-click="meteo.search(city)"  href="#">{{city}}</a>
 </div>

单击链接时,将调用该函数,但不传递任何参数。 我没有使用$ scope。

你能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:0)

首先,它适用于我(Chrome 55)...我在您的搜索功能中执行了console.log(input),当我点击搜索历史记录项时,我看到它已被返回。

其次,您用于设置默认搜索参数的语法是ES6,并且可能不支持跨浏览器(即如果您没有进行某种向下转换,我将假设您不是这样)。

我会改为指定你的默认函数参数:

$scope.search = function(input) {
  input = (typeof input !== 'undefined') ?  input : self.city;
  // ...
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters

或者,如果您想看到带有参数的ng-click,请查看此演示:https://plnkr.co/edit/BzazAa?p=preview

答案 1 :(得分:-1)

如果可以,请使用$ scope定义函数:

然后定义像这样的函数

$ scope.search = function(city){

};

请注意我只是在()中给出了一个名字而没有别的,这应该有效