将回调函数传递给指令

12 浏览
0 Comments

将回调函数传递给指令

我正试图将一个回调函数从控制器传递给指令。\n以下是回调函数的代码:\n$scope.onImageSelect = function(image) {\n alert(\'SET\');\n $scope.card.image = image;\n};\n指令的使用方式:\n\n指令的代码:\nngmod.directive(\'directive\', function() {\n return {\n templateUrl: \'/templates/template.html\',\n scope: {\n callback: \'&\'\n }\n }\n});\n在模板中使用回调函数:\n\n然而,这给了我以下的错误:\nTypeError: 无法使用\'in\'运算符搜索\'onImageSelect\'\n我看过很多类似的问题,但无法理解我哪里出错了。

0
0 Comments

在这段代码中,问题是如何将回调函数传递给指令,并在指令中调用该回调函数。

问题的原因是指令的`link`函数中的`scope.call_back`方法没有正确调用回调函数。在这个函数中,`scope.callBackFun`应该被调用,而不是`scope.call_back`。

解决方法是修改指令的`link`函数中的代码,将`scope.callBackFun`调用的参数修改为正确的参数。正确的参数应该是`{a: tax, b: scope.obj}`,而不是`{a: tax, b: obj}`。

修改后的指令代码如下:

{
  scope: {
    callBackFun: '&'
  },
  link: function (scope, element, attrs) {
    scope.tax = {amount:12, rate:10.50};
    scope.obj = {number:12, value:10};
    scope.call_back = function (tax) {
      scope.callBackFun({a: tax, b: scope.obj});
    }
  }
}

这样,当指令中的`call_back`方法被调用时,将正确地调用传递给指令的回调函数。

此外,还需要在控制器中定义`calculate_tax`函数,以便在指令中调用。

app.controller("sample", function($scope){
  $scope.calculate_tax = function (tax, obj) {
    console.log("tax " + JSON.stringify(tax));
    console.log("obj " + JSON.stringify(obj));
  }
});

通过这些修改,现在应该能够正确地将回调函数传递给指令,并在指令中调用该回调函数。

0
0 Comments

问题出现的原因:

在AngularJS中,指令(directive)是一种用于扩展HTML标签的方式,可以添加自定义的行为和功能。有时候,我们需要将一个回调函数传递给指令,在特定的事件发生时执行该函数。回调函数可以用于处理指令内部的逻辑,或者将指令内部的数据传递给外部的作用域。

解决方法:

要将回调函数传递给指令,可以使用指令定义中的属性来接收回调函数,并在指令内部调用该函数。在上面的例子中,使用了一个名为"callback"的属性来接收回调函数。然后,在指令内部,可以通过调用该属性来执行回调函数。

示例代码:

<google-image-search callback="onImageSelect(image)" />

这个例子来自AngularJS开发者指南,非常类似于你的情况。你可以在以下链接中查看完整的例子:

http://plnkr.co/edit/hYBxk070sgw54RElyWNq?p=preview

0
0 Comments

问题的原因是在指令中调用表达式方法时,需要以JSON格式从指令中传递参数,并且需要正确设置指令的callback属性值来传递函数,例如callback="onImageSelect(image)"

解决方法是在指令使用中,在<google-image-search callback="onImageSelect(image)" />中正确设置callback属性值。

指令的模板中,使用<a data-ng-click="callback({image: url})"></a>来调用回调函数,并以JSON格式传递参数image: url

0