如何在通过对象传递的指令中执行方法

时间:2015-12-02 10:44:21

标签: javascript angularjs directive

目标:我需要在指令模板html中执行一个方法,该方法是一个传递给指令范围的对象的成员。

我想得到"你好,世界!"输出。有人可以帮忙吗。

HTML:



var myApp = angular.module('myApp',[]);

myApp.directive('passObject', function() {
    return {
        restrict: 'E',
        scope: { obj: '=' },
        template: '<div>Hello, {{obj.func1()}}!</div>'
    };
});

myApp.controller('MyCtrl', function ($scope) {
    $scope.obj = { func1: "$scope.function1.toString()" };
  
  $scoe.function1 = function() {
    return "world!";
  };
});
&#13;
<div ng-controller="MyCtrl">
    <pass-object obj="obj"></pass-object>
</div>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

首先,您需要在创建对象之前定义该函数。 其次,你需要传递函数定义而不是函数调用传递给对象(没有'()')。

var myApp = angular.module('myApp',[]);
myApp.directive('passObject', function() {
    return {
        restrict: 'E',
        scope: { obj: '=' },
        template: '<div>Hello, {{obj.func1()}}!</div>'
    };
});

myApp.controller('MyCtrl', function ($scope) {
    $scope.function1 = function() {
        return "world!"; // here you can call .toString() if needed
    };
    $scope.obj = { func1: $scope.function1 };
});
<div ng-controller="MyCtrl">
    <pass-object obj="obj"></pass-object>
</div>

答案 1 :(得分:0)

  1. &#34; @&#34; (文本绑定/单向绑定)
  2. &#34; =&#34; (直接模型绑定/双向绑定)
  3. &#34;&安培;&#34; (行为绑定/方法绑定)
  4. 所以你应该使用&amp;而不是=并传递函数本身,而不是整个对象。我不能让你的工作成为你的工作,而不是没有这个功能的指令。

    查看更多: What is the difference between '@' and '=' in directive scope in AngularJS?

答案 2 :(得分:0)

A

     你也可以在指令中传递函数并调用它..这对我有用..