angularjs
2016-02-26 30 views 0 likes 
0

我读过很多关于同一文本的问题,但没有人帮助我,所以我问了一个新问题。ng-click不打电话给我的控制器功能

我有一个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点击,没有任何反应。但是,如果我在那里检查HTML,并复制ng-click内的文本,然后将其粘贴到控制台中,它就可以工作。为什么函数没有被调用?

任何人有任何想法?

+0

看到控制器代码我为脚本编写的代码。 –

回答

1

最好的办法

通知的as语法。这对控制器

<div ng-init='period=".$_REQUEST['period']."' ng-controller='debtController as debt'> 

变化创建别名的NG-点击asociated到控制器别名

<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); 
      } 
    }); 
1

可以简单地传递该变量没有表达式

改变从:

<a href="#" ng-click="openDebt('{{period}}')" />+</a> 

到:

<a href="#" ng-click="openDebt(period)" />+</a> 
+0

不知道,谢谢。虽然这并不能解决问题 – AleOtero93

+0

现在有什么问题? – Sajeetharan

+0

同样,功能不被称为,但功能的作品......如果我复制在控制台中单击文本它的作品。 – AleOtero93

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

+0

无法使用$ scope,添加注入时错误 – AleOtero93

+0

在函数中注入$ scope。 downvote for ?? –

+0

我没有downvote,我怎么注入$ scope? – AleOtero93

相关问题