如何使用Angular将变量从指令传递给控制器

时间:2017-04-27 16:13:03

标签: javascript angularjs

我有一个在指令html中调用的函数。我想将该对象传递给控制器​​。我怎么做?以下是我到目前为止的副本

wpGroup.html

<button ng-click="hideGroup(item.id)">-</button>

WP-group.js

 scope:{hideGroup: &} //nothing else related to hideGroup or item.id

WP-view.html

 <data-wp-group data-item="childItem" data-hide-group="vm.hideGroup(vm.id)"/>

2 个答案:

答案 0 :(得分:0)

javascript中的

functions是第一类,它们可以作为参数传递到任何你想要的地方。

如果我理解正确,你想将hideGroup函数传递给另一个控制器并调用它。

您可以在两者之间共享引用,一些事件使用自定义服务处理(或更好)。

.service('ShareDataService', function(){
 var data;
 this.setFn = function(fn){
  data = fn;
 }
 this.getFn = function(){
  return data;
 }
})

然后在你的指令中注入服务并设置数据。

ShareDataService.setFn(scope.hideGroup);

并在您的控制器中获取参考;

var hideGroupFn = ShareDataService.getFn();

答案 1 :(得分:0)

我正在回答这个问题,希望data-wp-group是你的指示。

这些应该被修改,

<强> WP-group.js

 scope:{dataHideGroup: &} //nothing else related to hideGroup or item.id

在up-group.js里面,

scope.hideGroup = function(id){
  scope.dataHideGroup({"id":id});
 }

<强> WP-view.html

 <data-wp-group data-item="childItem" data-hide-group="vm.hideGroup(id)"/>

希望你理解我说的话