首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角传递变量从指令到控制器

角传递变量从指令到控制器
EN

Stack Overflow用户
提问于 2015-10-20 22:14:35
回答 1查看 64关注 0票数 1

我想创建一个包含大量字段和一个按钮的指令,当用户单击按钮时,填充的信息应该能够传递到指令之外的搜索函数。

代码语言:javascript
复制
var app = angular.module('myapp', []);

app.controller("myCtrl", function($scope) {

    $scope.doSearch = function(query) {
        query.order="asc";
        console.log(query); //do api call 
    }
});

app.directive('queryBuilder', function() {
    return {
        restrict: 'E',
        scope: {
            queryFn: '&'
        },
        template: "<button ng-click='directiveClick()'>Click</button>",
        replace: true,        
        link: function(scope, elm, attrs) {
          scope.directiveClick = function(){
            var query={name:"bill",age:12}
            scope.queryFn(query);
          }
        }
    }
});

view.html

代码语言:javascript
复制
<div ng-controller="myCtrl">
      <query-builder query-fn="doSearch()"></query-builder>
    </div>

query参数在doSearch()中未定义,如何将链接函数中的query对象带到myCtrl

我想到的另一个方法是使用双向绑定查询变量,而不是传递搜索函数。哪条路更好?

请参阅普朗克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-20 22:22:31

让指令调用其作用域以外的函数的方法是完全有效的。但是,为了使通信工作有效,您需要:

1,在使用指令时指定参数名。

代码语言:javascript
复制
<query-builder query-fn="doSearch(query)"></query-builder>

2 .在指令中,当调用函数时,必须传递一个对象,其中键是#1中的参数名。

代码语言:javascript
复制
scope.directiveClick = function(){
  var query={name:"bill",age:12}
  scope.queryFn({query: query});
}

柱塞

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33247742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档