Angularjs 将方法从指令传递到工厂
我试图通过一个指令将控制器中定义的方法传递给工厂。我似乎无法完全理解范围界定或最好的方法 HTML:Angularjs 将方法从指令传递到工厂,angularjs,angularjs-scope,angular-directive,angular-services,angular-controller,Angularjs,Angularjs Scope,Angular Directive,Angular Services,Angular Controller,我试图通过一个指令将控制器中定义的方法传递给工厂。我似乎无法完全理解范围界定或最好的方法 HTML: 您想提供指令..中方法的实现还是其他什么?但是你这样做似乎非常不正确。如果我理解正确,你需要做的是在指令定义中添加一个范围绑定/参数,然后在调用它时传递它。实现应该在控制器中定义。。。每个都会略有不同。我希望做的是将已定义的函数delegate传递给工厂,在那里它将被执行或分配给外部库,如JQueryUI。 <div ng-controller="testController as tc"
您想提供指令..中方法的实现还是其他什么?但是你这样做似乎非常不正确。如果我理解正确,你需要做的是在指令定义中添加一个范围绑定/参数,然后在调用它时传递它。实现应该在控制器中定义。。。每个都会略有不同。我希望做的是将已定义的函数delegate传递给工厂,在那里它将被执行或分配给外部库,如JQueryUI。
<div ng-controller="testController as tc">
<h1>Testing from directive -> factory</h1>
<test-directive todo="doSomething()"> </test-directive>
<button ng-click="tc.executeSomething()">DO IT!</button>
</div>
var app = angular.module('testApp',[]);
app.controller('testController',[
'testFactory',
function(testFactory){
var self = this;
$scope.doSomething = function(){
alert('success!');
}
self.executeSomething = testFactory.delegate();
}]);
app.directive('testDirective',['testFactory'
function(testFactory){
return {
restrict: 'E',
scope: { todo = '&' },
link: function(scope, elem, attr){
if(attr.todo){
testFactory.delegate = scope.todo;
}
}
}
}]);
app.factory('testFactory',[
function(){
return {
delegate: function();
}
}]);