Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从javascript调用指令函数_Javascript_Jquery_Angularjs - Fatal编程技术网

如何从javascript调用指令函数

如何从javascript调用指令函数,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,JavaScript函数: var API = (function(){ return { function invokeDirective(){ invvoke(); $scope.setItem() // to directive } } }); 指令: angular.module('sampleComponents',

JavaScript函数:

 var API = (function(){
        return {
            function invokeDirective(){
                invvoke();
                $scope.setItem() // to directive
            }       
        }
    });
指令:

angular.module('sampleComponents', ['$strap.directives']).directive('titlebar',
function($filter,$timeout)
{
    return {
        restrict: 'AE',
        replace: true,
        scope: true,
        transclude: true,
        template: '<div class="searchBar r  etc ........',
        controller: function($scope,$http,$timeout)
        {
            $scope.setItem = function(){
                // want to invoke this function from api.js -
            }
        }
        link: function(scope, element, attrs){
            // etc:
        }

});
angular.module('sampleComponents',['$strap.directives'])。directive('titlebar',
函数($filter,$timeout)
{
返回{
限制:“AE”,
替换:正确,
范围:正确,
是的,

模板:“是的,你可以用一种非常简单的方法来做

演示代码:

//This is too get scope outside of angular controller/service/directive
//with a hacky way to do that.

var $injector =angular.injector(['ng','MyApp']);
var html = "<div titlebar=''></div>";
$injector.invoke(function($compile, $rootScope){
    var $scope = $rootScope.$new();
    var result= $compile(html)($scope);

    var cScope = result.scope(); // This is scope in directive controller. :  )
    //Do anything you want with this scope .
});
//这太过分了,超出了angular controller/service/directive的范围
//用一种老套的方式。
var$injector=angular.injector(['ng','MyApp']);
var html=“”;
$injector.invoke(函数($compile,$rootScope){
var$scope=$rootScope.$new();
var result=$compile(html)($scope);
var cScope=result.scope();//这是指令控制器中的作用域。:)
//使用此范围可以执行任何操作。
});


快乐编码:)

API.js本身应该是一个角度服务,作为依赖项注入到指令中。如果需要,您应该通过外部API公开服务调用。