Angularjs Как вы вызываете метод контроллера внутри функции javascript, определенной в файле шаблона html?

Я прочитал эту ссылку:Доступ к AngularJS извне функции js и я попытался получить доступ к контроллеру, но я неt настроить мой index.html как пример fiddlejs.

Я настроил свое приложение на использование $ routeProvider и настроил простой сервис для обмена некоторыми данными приложения. Я хочу иметь возможность общаться между контроллерами и делать это с помощью сервиса. Я столкнулся с проблемой, хотя с одним из моих маршрутов, потому что я хочу иметь возможность установить некоторые данные приложения со страницы в службу.

В signin.html есть несколько javascript, которые используют некоторые виджеты javascript и имеют обратные вызовы после завершения. Я пытаюсь вызвать метод в моем LoginController из сценариев, но я получаю неопределенный, потому что я неНе указывайте контроллер с помощью ng-контроллера. Есть ли способ получить LoginController из сценариев в моем signin.html?

myapp.js

var myApp = angular.module('myApp', ['ngCookies', 'ngResource'],
  function ($routeProvider, $locationProvider, $httpProvider) {
 }); 
 myApp.service('sharedPropertiesService', function () {

var isValidUser = false; 

return {
    setValidUser: function (userValid) { isValidUser = userValid;}, 
    isValidUser: function () {return isValidUser;},
};
 });

myApp.controller('loginController', ['$scope', '$http', 'sharedPropertiesService',
   function ($scope, $http, sharedPropertiesService) {
      $scope.test = function() {alert('called from inside the html template.');};           
    }
 ]).controller('PageController', ['$scope', '$location', 'sharedPropertiesService',
      function ($scope, $location, sharedPropertiesService) {

        if (sharedPropertiesService.isValidUser()) {
    $location.path('/myapp');
    } else {
    // Have them login
    $location.path('/signin/');
    }   
}
  ]);

myApp.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/', {templateUrl: '/home.html', controller: 'PageController'}).
        when('/signin', {templateUrl: '/signin.html', controller: 'SusiController'}).
        when('/myap', {templateUrl: '/myApp.html', controller: 'PageController'});
}]);

index.html

  
  
     // load Angularjs, jquery, etc.
  
  
     
  
  

signin.html

 

   
       
    
 

 
     $.ready('loginwidget_main', function () { 
          loginwidget.load('signin', function () {
               done : success,
               fail : fail  
          });
      });

     function success() {
            var scope = angular.element($('#myapp')).scope().test;
       alert(scope); // this shows undefined
       scope();
     }

     function fail() {alert("failed to login");}

 
 Ven20 июн. 2013 г., 18:33
тьфу. Используйте сервис аутентификации вместо глобального держателя.
 9ers Rule20 июн. 2013 г., 18:31
Это опечатка, когда я публиковал код, я изменил имя приложения, чтобы защитить невинных.
 Chandermani20 июн. 2013 г., 06:52
Можете ли вы попробовать и соответствовать делу дляmyApp в определении модуля и HTMLng-app тег.

Ответы на вопрос(2)

Решение Вопроса

Я понял это с помощью друга. Вот решение:

в файле signin.html добавьте идентификатор в div в верхней части. В коде скрипта используйте этот идентификатор, чтобы попасть в область видимости с помощью jquery (Необходимо использовать angular.element ()).

signin.html


   
       
       
   
 

 
    $.ready('loginwidget_main', function () { 
      loginwidget.load('signin', function () {
           done : success,
           fail : fail  
      });
  });

 function success() {
        var scope = $('#loginwidget').scope();
        scope.test();
 }

 function fail() {alert("failed to login");}

 
You can check below code snippet here we are calling the loginwidget scope function in javascript function.


    


function myFunction(){
      angular.element(document.getElementById('parentController')).scope().myFunction();
}

Примечание: здесь вам нужно определить вашу функцию в parentController.

Ваш ответ на вопрос