我用相同的文字阅读了很多问题,但没有人帮助我,所以我问了一个新问题。
我有一个ng-app,ng-controller。
<div ng-app='mainApp'>
<div ng-init='period=".$_REQUEST['period']."' ng-controller='debtController'>
然后,有些线条咆哮,定义它们。
<script type='text/javascript'>
var app = angular.module('mainApp', []);
app.controller('debtController', function(){
openDebt = function(period){
console.log(period);
}
});
</script>
最后但并非最不重要的是,一个调用定义函数的ng-click。
<a href="#" ng-click="openDebt('{{period}}')" />+</a>
所以,如果我用ng-click单击'+',则没有任何反应。但是,如果我在那里检查HTML,并在ng-click中复制文本,然后将其粘贴到控制台中,它就可以工作。为什么没有调用函数?
有人有任何想法吗?
答案 0 :(得分:1)
您可以简单地传递没有表达式的变量
更改自:
<a href="#" ng-click="openDebt('{{period}}')" />+</a>
要:
<a href="#" ng-click="openDebt(period)" />+</a>
答案 1 :(得分:1)
最佳方法
请注意as
语法。这为控制器创建了一个别名
<div ng-init='period=".$_REQUEST['period']."' ng-controller='debtController as debt'>
更改与控制器别名相关的ng-click
<a href="#" ng-click="debt.openDebt('period')" />+</a>
在控制器代码中使用this
将控制器与html相关联
var app = angular.module('mainApp', []);
app.controller('debtController', function(){
this.openDebt = function(period){
console.log(period);
}
});
答案 2 :(得分:0)
好的,首先将openDebt嵌入到控制器内的范围:$scope.openDebt
。其次,在ng-click中,您不需要handlebar
来传递值。
<script type='text/javascript'>
var app = angular.module('mainApp', []);
app.controller('debtController', function($scope){
$scope.openDebt = function(period){
console.log(period);
}
});
</script>
<强> HTML:强>
<a href="#" ng-click="openDebt(period)" />+</a>
PLUNKER示例: http://plnkr.co/edit/OyhBWkrREtt2JT2IWuVN?p=preview