2014-09-24 53 views
0

我試圖在視頻結束後執行一個函數,該函數位於角度控制器內部。該函數被調用,但我得到一個錯誤,說明:控制器內部沒有定義函數,angularJS

ReferenceError: postVendor is not defined 

這裏是調用的javascript:

 $.noConflict(); 
     jQuery(document).ready(function ($) { 
      var api = flowplayer(); 
      api.bind("finish", function (e, api) { 
       var data = "true"; 
       var url = "someurlhere"; 
       postVendor(url, data); 
      }); 
     }); 

,這裏是我的模塊/控制器(同一個文件):

var registrationModule = angular.module('registrationModule', []); 

registrationModule.controller("vendorCtrl", function ($scope, $http) { 
    $scope.postVendor = function (url, data) { 
     $http.post(url, data).success(function (data) { console.log(data) }).error(function (data) { console.log(data) }); 
    }; 

}); 

在我的html中:

<html xmlns="http://www.w3.org/1999/xhtml" ng-app="registrationModule"> 

<body ng-controller="vendorCtrl"> 

我正在使用角1.2.25。

有關如何正確調用函數的任何想法?

回答

1

1,請確保jQuery是angular.js之前加載

2.確保您的vendorCtrl回報$ scope.postVendor(你可以通過添加):

return { 
    postVendor : $scope.postVendor 

    }; 

請見例如

$(document).ready(function() { 
 
    
 
     
 
    angular.element('#angularController').controller().doSomthing("Hello ", "from jquery") 
 
    
 
    }); 
 

 

 
var app = angular.module('app', []); 
 

 
app.controller('firstCtrl', function($scope){ 
 

 
    $scope.doSomthing = function(a,b){ 
 
    alert(a+b); 
 
    }; 
 
    
 
    
 
    
 
return { 
 
    doSomthing: $scope.doSomthing 
 
    
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 

 
<body ng-app="app" > 
 
    <div id="angularController" ng-controller="firstCtrl"> 
 

 
     </div> 
 
</body>
應該有助於

$.noConflict(); 
    jQuery(document).ready(function ($) { 
     var api = flowplayer(); 
     api.bind("finish", function (e, api) { 
      var data = "true"; 
      var url = "someurlhere"; 
      angular.element('body').controller().postVendor(url, data); 
     }); 
    }); 

更多信息請參閱此處Call Angular JS from legacy code

+0

謝謝,我只是想這樣的變化,但得到:'錯誤:[jqLit​​e:nosel]!通過選擇仰望元素不被jqLit​​e支持' – user4075691 2014-09-24 16:56:15

+0

@ user4075691請參閱更新 – sylwester 2014-09-24 19:16:00