如何从全局范围调用AngularJS JavaScript指令方法

如何从全局范围调用AngularJS JavaScript指令方法,javascript,angularjs,Javascript,Angularjs,我有一个类似AngularJS示例之一的指令,如下所示。 如何从全局范围调用toggle方法? 我希望能够从一些遗留代码中切换zippy myApp.directive('zippy', function(){ return { restrict: 'E', replace: true, transclude: true, scope: { title:'bind' }, template:

我有一个类似AngularJS示例之一的指令,如下所示。 如何从全局范围调用toggle方法? 我希望能够从一些遗留代码中切换zippy

myApp.directive('zippy', 
function(){
    return {
        restrict: 'E',
        replace: true,
        transclude: true,
        scope: { title:'bind' },
        template:
        '<div class="zippy">' +
        '<div class="title">{{title}}</div>' +
        '<div class="body" ng-transclude></div>' +
        '</div>',
        link: function(scope, element, attrs) {
            var title = angular.element(element.children()[0]),
            opened = true;
            title.bind('click', toggle);
            function toggle() {
                opened = !opened;
                element.removeClass(opened ? 'closed' : 'opened');
                element.addClass(opened ? 'opened' : 'closed');
            }
            toggle();
        }
    }
});
myApp.directive('zippy',
函数(){
返回{
限制:'E',
替换:正确,
是的,
作用域:{title:'bind'},
模板:
'' +
“{{title}}”+
'' +
'',
链接:函数(范围、元素、属性){
var title=angular.element(element.children()[0]),
开放=真;
title.bind('单击',切换);
函数切换(){
打开=!打开;
element.removeClass(打开?'closed':'opened');
元素addClass(打开?'opened':'closed');
}
切换();
}
}
});

当您想通过legacy访问事件时,您应该使用angular的$apply方法,如下所示:

function set_from_legacy(dom_element) {
    var scope = angular.element(dom_element).scope();
    scope.$apply(function() {
         scope.viewmodel_element.property1 = something;
         scope.viewmodel_element.property2 = somethingelse;
    });
}
然后angular应该启动并更新与视图模型关联的HTML中的属性

e、 g.稍微更改模板,使其将类名绑定到控制器中的模型zippy(当然,它可以是zippy的数组)


希望这能有所帮助。

当您想通过legacy访问您的事件时,您应该使用angular的$apply方法,如下所示:

function set_from_legacy(dom_element) {
    var scope = angular.element(dom_element).scope();
    scope.$apply(function() {
         scope.viewmodel_element.property1 = something;
         scope.viewmodel_element.property2 = somethingelse;
    });
}
然后angular应该启动并更新与视图模型关联的HTML中的属性

e、 g.稍微更改模板,使其将类名绑定到控制器中的模型zippy(当然,它可以是zippy的数组)

希望这有帮助