2014-07-09 2 views
1

Мой угловой код приложения:Вызывающие угловатые JS от внешнего контроллера

(function() { 

    var app = angular.module('checkout', []); 
    app.controller('TabController', function(){ 
     this.tab2Done=0; 
     this.setTab2Done= function(newValue){ 
       this.tab2Done = newValue; 
     }; 
    }); 
})(); 

Я хочу, чтобы позвонить tab2Done из функции JavaScript (имя функции вызова). Я нашел решение в Интернете, и я пробовал этот метод, но он не работает. Это метод, который я пытался:

DIV, который имеет имеет ng-controller="TabController" имеет id="yourControllerElementID"

Это мой Javascript функция:

function call(){ 
    alert(); 
    e=$('#yourControllerElementID'); 
    scope=angular.element(e).scope(); 
    scope.$apply(function(){ 
     scope.setTab2Done(1); 
    }); 
} 

, но я получил ошибку:

at Scope.$eval at Scope.$apply

Что я сделал не так?

ответ

1

Я думаю, что проблема заключается в том, что метод, который вы пытаетесь вызвать, НЕ находится в вашем объеме. Похоже, вы используете синтаксис «Контроллер как», судя по тому, что вы устанавливаете метод «this» в контроллере.

Вы могли бы обеспечить plunker на ваш пример, но позвольте мне попытаться решить проблему с этим кодом:

function call(){ 
    var element = angular.element('#yourControllerElementID'); 
    var controller = element.controller(); 
    var scope = element.scope(); 
    scope.$apply(function(){ 
    controller.setTab2Done(1); 
    }); 
} 
+0

Я согласен с [это] (http://stackoverflow.com/questions/21287794/ angularjs-контроллер, как-синтаксическое разъяснение). Я пропустил обновление. Спасибо, Schierbeck – Dinesh

0

Не уверен, что вы просите, но ваш код выглядит странно, попробуйте это! Возможно, это может дать вам ключ :)

angular.module('checkout', []). 
    controller('TabController', ['$scope', function ($scope) { 
     $scope.tab2Done=0; 


     var setTab2Done = function(newValue){ 
       $scope.tab2Done = newValue; 
      } 

     //to call the function through the scope 
     // e.g. from your html <a href='javascript:void(0)' ng-click='call()'></a> 
     $scope.call = function(){ 
      setTab2Done(1); 
     } 

     //call the function directly on this script 
     setTab2Done(1); 
    }); 
Смежные вопросы