Angularjs如何通过ng单击将参数从指令传递回控制器

Angularjs如何通过ng单击将参数从指令传递回控制器,angularjs,Angularjs,我有一个处理评论过程的指令。我将其绑定到父控制器,如下所示: <div commentable signin="signIn()"</div> 如何将ng click中的提供程序字符串绑定到函数中Ctrl的提供程序?您所拥有的应该可以工作。但请确保在控制器中声明了signIn()。因此: function YourController($scope) { $scope.signIn = function (provider) { console

我有一个处理评论过程的指令。我将其绑定到父控制器,如下所示:

<div commentable signin="signIn()"</div>

如何将ng click中的提供程序字符串绑定到函数中Ctrl的提供程序?

您所拥有的应该可以工作。但请确保在控制器中声明了
signIn()
。因此:

 function YourController($scope) {  
     $scope.signIn = function (provider) {
        console.log('clicked signin ' + provider);         
 }}
假设您的按钮位于控制器中:

 <div ng-controller="YourController">    
     <button type="button" ng-click="signIn('test')">Sign In</button>
 </div>

登录

这里有一把小提琴在工作:

真奇怪。我在控制台中得到以下信息:单击登录未定义。所以这两个都是连接在一起的,但由于某种原因,提供者的“测试”并没有从按钮传递到控制器。实际上,它显示在控制台中:单击signin provider。嗯,奇怪。我刚刚更新了小提琴,使它有两个按钮,点击的结果显示在“结果:”旁边。看看这些按钮是否适合您。是的,JSFIDLE可以工作。但是,请记住,我首先要通过一个指令来传递它。我认为问题在于我传递signin=“signin()”的指令。顺便说一句,我在signin=“signin(‘provider’)”中有‘provider’;去掉它,它又回到了未定义的状态。你能模拟一把小提琴来展示你是如何设置它的吗?有指令吗?然后,我们将确保我们都在同一页上。您可能会在隔离范围中为类似scope:{signIn:“=”}的指令寻找“=”,因此传入的函数被调用。。。不确定显示指令是否有帮助。
 function YourController($scope) {  
     $scope.signIn = function (provider) {
        console.log('clicked signin ' + provider);         
 }}
 <div ng-controller="YourController">    
     <button type="button" ng-click="signIn('test')">Sign In</button>
 </div>