2012-10-06 84 views
0

我有一個像AngularJS的示例之一的指令,如下所示。 如何從全局範圍調用切換方法? 我希望能夠從一些遺留代碼切換zippy。如何從全局範圍調用AngularJS JavaScript指令方法

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(); 
     } 
    } 
}); 

回答

4

當你想通過傳統的訪問活動後,你應該用$從角工作中使用的方法,如:

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; 
    }); 
} 

然後角度應該踢在和更新性質的HTML相關與視圖模型。

例如稍微改變你的模板,使其具有綁定到控制器模型zippy的className(它當然可以是zippy的數組)

希望這有助於。