Angular - 将$ scope函数传递给指令

时间:2015-05-29 23:58:15

标签: javascript angularjs angularjs-directive

我通过html属性将控制器$ scope函数传递给指令,但由于某种原因,该指令认为该函数是一个字符串。任何提示?

HTML

<modal show='createCustomer' create-new-customer='createNewCustomer()'></modal>

指令

function modalDialog() {
  return {
    restrict: 'AE',
    scope:{
      createNewCustomer: '&'
    },
    replace: true,
    transclude: true,
    link: function(scope, element, attrs) {
      scope.createNewCustomer = attrs.createNewCustomer;
      console.log(typeof scope.createNewCustomer)
    },
    templateUrl: "./views/directive_templates/modal.html"
  };
}

$ scope function

 $scope.createNewCustomer = function(){
    alert('yo')
  }

最佳, 奥斯汀

3 个答案:

答案 0 :(得分:0)

您的代码应为:

TupleOfTuples

最有可能立即调用函数并传入结果

答案 1 :(得分:0)

在您的指令中,您已经通过在隔离范围中使用var newArray = [ ['hello',['tom']], ['world',['tom','bob']], ['foo',['bob','jim']], ['bar',['jim']], ]; 参数绑定了该函数scope.createNewCustomer。但是,当您通过&重新分配函数时,实际上会使用字符串值覆盖该函数。 attrs只是一个键值对的数组,它是元素中每个属性的字符串表示形式。

答案 2 :(得分:0)

AngularJs指令允许您使用&#39;&amp;&#39;范围内的方法有2种方法。第一种方法允许你在隔离指令内传递参数。第二种方法允许你在指令之外传递参数但是调用INSIDE ISOLATED DIRECTIVE.Like

<div my-dir func="myFunc(arg1,arg2,..)"></div>
<div my-dir func="myFunc(value1,value2,..)"></div>

如果你想要更多,这里有一篇很酷的文章,其中有一些例子:

http://www.w3docs.com/snippets/angularjs/angularjs-directive-scope-method.html