【问题标题】:Calling Angular JS function inside JQuery function not working在 JQuery 函数中调用 Angular JS 函数不起作用
【发布时间】:2015-03-13 13:54:41
【问题描述】:

我在 JQuery 函数中调用了一个 Angular JS 函数,但它不起作用,谁能指出错误

Javascript 函数:-

我有一个文本字段,您可以在其中添加员工电子邮件地址,基于添加的电子邮件 ID,Angular js 函数从 Google 目录中提取他的全名。在下面的函数中,我试图将所有添加的员工姓名连接到一个字符串。但我无法在 Jquery 函数中调用 Angular JS 函数。

     (function( $ ){

       $.fn.multipleInput = function() {

         return this.each(function() {

        angular.element('#theController').scope.getFullName($input.val());
        alert(fullname);


            }

           });

Angular JS 函数:-

我创建了以下函数来从 google 目录中提取全名。 Angular JS 函数利用服务并返回员工的全名。

     var bipin=angular.module("ui.bootstrap.demo",['ui.bootstrap']);

     bipin.controller('theController',['$scope','$q','$http','$window',     function($scope,$q,$http,$window){
     $scope.selected = '';
       $scope.email = '';
       $scope.fullName = '';

      $scope.getFullName= function(item) {
              alert();
               return $http.get('https://myservice/v1/query/'+$label)
            .then(function(response){
              return response.data.items.map(function(item){

                    $scope.fullName=item.fullName; 

               return    item.fullName;

               });
            });



          };

$scope.addOne=function(num){ var q=$q.defer() //创建一个延迟对象,它代表一个将在未来完成的任务 $scope.step++;

               if(angular.isNumber(num)){
                  setTimeout(function(){q.resolve(num+1)},1000)
                    }else{
                    q.reject('NaN')
                       }
                return q.promise
                }

             $scope.step=0;
             $scope.myValue=0;
             $scope.promise=$scope.addOne($scope.myValue);
             $scope.promise
             .then(function(v){return $scope.addOne(v)})
             .then(function(v){return $scope.addOne(v)})
             .then(function(v){return $scope.addOne(v)})
             .then(function(v){return $scope.addOne(v)})
             .then(
               function(v){$scope.myValue=v},
               function(err){$scope.myValue=err}
                )
        }])  

【问题讨论】:

  • 你能把错误包括进来吗?
  • 将 angular.element('#theController').scope 更改为 angular.element('#theController').scope()

标签: jquery angularjs


【解决方案1】:

.scope 是一个函数。您需要更改此行:

angular.element('#theController').scope.getFullName($input.val());

到这里:

angular.element('#theController').scope().getFullName($input.val());

编辑添加:要返回异步操作,请执行此操作...

$('[ng-controller="theController"]').scope().getFullName($input.val())
    .then(function(fullName) {
        alert(fullname);
     }

$scope.getFullName= function(item) {
    var deferred = $q.defer();

    $http.get('https://myservice/v1/query/'+$label)
        .then(function(response) {
            response.data.items.map(function(item) {
                deferred.resolve(item.fullName); 
            }
        })   

    return deferred.promise;
});

【讨论】:

  • 错误详情:未捕获类型错误:无法读取未定义的属性“getFullName”
  • 如果你这样做会发生什么 Console.log(angular.element('#theController').length);
  • 我在 Jquery 函数中调用了 console.log(),它说 Uncaught ReferenceError: Console is not defined
  • 谢谢大家,现在我用了 var fullname = $('[ng-controller="theController"]').scope().getFullName($input.val());跨度>
  • 如何确保在 JQuery 移动到下一行之前执行 getFullName()??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 2010-10-20
  • 2019-03-01
  • 2013-05-05
  • 2016-12-17
  • 1970-01-01
相关资源
最近更新 更多