目标:我需要在指令模板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;
答案 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)
所以你应该使用&amp;而不是=并传递函数本身,而不是整个对象。我不能让你的工作成为你的工作,而不是没有这个功能的指令。
查看更多: What is the difference between '@' and '=' in directive scope in AngularJS?
答案 2 :(得分:0)
A
你也可以在指令中传递函数并调用它..这对我有用..