Javascript 如何使用ng repeat中的变量动态设置ng click上的参数
我试图在我的标签中获取Javascript 如何使用ng repeat中的变量动态设置ng click上的参数,javascript,angularjs,Javascript,Angularjs,我试图在我的标签中获取{{date | date:'dd'}}表达式,并将其作为方法参数插入我的ng click。问题是,当我尝试此操作时,我得到一个未定义的不是一个函数错误。{{}表达式按其应该的方式填充,但它看起来进入ng click的date的行为就像一些未定义的变量。我不知道如何解决这个问题,任何帮助都将不胜感激 <div ng-controller="methodController"> <div class="btn-group" data-ng-repea
{{date | date:'dd'}}
表达式,并将其作为方法参数插入我的ng click
。问题是,当我尝试此操作时,我得到一个未定义的不是一个函数错误。{{}
表达式按其应该的方式填充,但它看起来进入ng click
的date
的行为就像一些未定义的变量。我不知道如何解决这个问题,任何帮助都将不胜感激
<div ng-controller="methodController">
<div class="btn-group" data-ng-repeat="date in dates">
<label data-ng-click="method(date | date:'dd')">{{date | date:'dd'}}</label>
</div>
</div>
我的方法在methodController
中定义为:
$scope.method = function (date) {
//code guts
}
如果我理解你的问题:
您希望将过滤后的日期
传递给您的方法(在控制器内部定义)
为此,您可以:
在控制器中定义过滤器
app.controller('DemoController',函数($scope,$filter){
$scope.dateFilter=$filter('date');
});代码>
在您的视图中调用它
ng click=“方法(日期过滤器(日期,'dd'))”
我认为问题与方法的定义有关
因此,我建议采用以下设计,使事情更紧密地联系在一起
将控制器内的方法定义为$scope
对象的属性,如下所示
$scope.method = function(date)
{
//your method logic here
}
<div ng-controller="YourController as c" />
...
<div class="btn-group" ng-repeat="date in dates">
<label ng-click="c.method(date)">{{date | date:'dd'}}</label>
</div>
...
</div>
然后调用标记中的方法,如下所示
$scope.method = function(date)
{
//your method logic here
}
<div ng-controller="YourController as c" />
...
<div class="btn-group" ng-repeat="date in dates">
<label ng-click="c.method(date)">{{date | date:'dd'}}</label>
</div>
...
</div>
...
{{date}日期:'dd'}
...
以其他建筑为基础。$filter函数似乎就是答案。但是在控制器逻辑中过滤它,而不是在视图中的方法中过滤它。这是一本书
头衔
- 单击此处:{{date | date:'dd'}}
角模('plunker')
.controller('MainCtrl',函数($scope,$filter){
$scope.dates=[];
$scope.newDate=新日期();
var today=$scope.newDate
对于(i=-3;i<0;i++){
$scope.dates.push(today.setDate(today.getDate()+i));
}
$scope.alert=函数(a){
变量b=$filter('date')(a,'dd');
警报(b);
};
});
请添加一些解释,说明这将如何解决问题。有关如何做出一个好答案的提示,请参阅。@MikeMcCaughan希望现在更好。我在问题中添加了更多信息。从外观上看,您的答案中我唯一缺少的是控制器别名。我在方法中设置了一个console.log(date)
,现在似乎ng单击甚至没有击中该方法。我尝试了它,它与我一起工作。不知道你怎么了。然而,我看到你已经得到了一个有效的答案。是的,干杯-没问题。Angularjs团队经常引用它,因此我尝试了它,并且比其他人更喜欢ui/功能。