如何通过Javascript或Jquery从控制器外部调用Angular JS函数?
我正在做一个项目,同时使用Jquery和AngularJS。Jquery-主要用于已经可用的插件。角度-便于处理窗体和对象以及DOM操作 我有一个插件(),其中定义了自定义事件,如-onShow、onFinish、onNext等。这些事件会在用户做某事时触发 如何从这些函数中调用AngularJS函数 来自插件的代码如何通过Javascript或Jquery从控制器外部调用Angular JS函数?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在做一个项目,同时使用Jquery和AngularJS。Jquery-主要用于已经可用的插件。角度-便于处理窗体和对象以及DOM操作 我有一个插件(),其中定义了自定义事件,如-onShow、onFinish、onNext等。这些事件会在用户做某事时触发 如何从这些函数中调用AngularJS函数 来自插件的代码 $(document).ready(function() { $('#rootwizard').bootstrapWizard({ t
$(document).ready(function() {
$('#rootwizard').bootstrapWizard({
tabClass: 'nav nav-pills',
onNext: function(tab, navigation, index) {
//I want to access the myFunction declared
//inside the AngularJS code and pass 'index' to it
}
});
});
AngularJS代码
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.myFunction = function(index) {
// do something with index
}
});
最简单的方法是从某个元素中检索控制器的作用域,然后调用其方法,如:
var myScope = angular.element($('#someElement')).scope();
myScope.doSomething(); // make sure you also invoke the $scope.$apply() to start the digest process.
但是,首先想想,这是你真正想要做的吗,我发现这种方法有点不成熟,而且从长远来看,混合使用jQuery和Angular也不是一件好事…最简单的方法是从某个元素检索控制器的范围,然后调用它的方法,如:
var myScope = angular.element($('#someElement')).scope();
myScope.doSomething(); // make sure you also invoke the $scope.$apply() to start the digest process.
但是,首先想一想,这是你真正想要做的吗?我发现这种方法有点老套,而且从长远来看,混合使用jQuery和Angular并不是一件好事…在ES6中,控制器可以定义为标准类。如果您以这种方式定义它们,那么在angular之外也很容易导入和使用它们
class MainController {
constructor(searchService) {
this.title = 'Hello World';
}
myFunction () {
// do things...
}
someOtherFunction () {
// do things...
}
}
export { MainController }
在app.js的中
然后,您可以通过以下方式访问它:
let result = someFunction();
在ES6中,控制器可以定义为标准类。如果您以这种方式定义它们,那么在angular之外也很容易导入和使用它们
class MainController {
constructor(searchService) {
this.title = 'Hello World';
}
myFunction () {
// do things...
}
someOtherFunction () {
// do things...
}
}
export { MainController }
在app.js的中
然后,您可以通过以下方式访问它:
let result = someFunction();
耶!这很有效。非常感谢。我知道把它们混在一起不是最好的办法。但我让我的生活简单多了,因为我可以两全其美。再次感谢!正确的方法是在指令中初始化插件。。。范围在DirectiveY中公开!这很有效。非常感谢。我知道把它们混在一起不是最好的办法。但我让我的生活简单多了,因为我可以两全其美。再次感谢!正确的方法是在指令中初始化插件。。。范围在指令中公开