我正在开发一个应用程序,最初是用backbone和jQuery创建的,但是由于客户的要求,新的模块是用angular构建的。应用程序的路由是用backbone路由来处理的,我们已经成功地集成了angular模块。
实际的问题是,我需要在Angular 上检索模块的当前示例,并根据 Backbone.js 控制器处理的操作从该模块的控制器执行函数。
以下是我的Angular 模块和控制器的外观:
//In chat.module.js
( function () {
angular
.module( 'chat.module', [] );
})();
//In chat.controller.js
(function () {
angular
.module('chat.module')
.controller('chat.controller', ['profileFactory', '$filter', '$q', '$timeout', 'Position', 'Chat', chat]);
function chat(profileFactory, $filter, $q, $timeout, Position, Chat) {
var vm = this;
vm.initChatFlag = false;
vm.initChat = initChat;
vm.setInformation = setInformation;
function setInformation() {
//handle business logic here
}
...
在 Backbone.js 中,模块的创建如下:
chatmodule: function () {
var self = this;
var element = angular.element(document.querySelector('#modalCallback'));
var chat = angular.element(document.querySelector('#chatModule'));
var isInitializedChat = chat.injector();
var isInitialized = element.injector();
if (!isInitialized) {
angular.bootstrap($('#modalCallback'), ['app']);
}
if (!isInitializedChat) {
angular.bootstrap($('#chatModule'), ['app']);
}
//TODO: chat.controller.setInformation() get access to fields like chat.controller.initChatFlag etc
主应用程序模块定义如下:
(function(){
angular
.module('app',[
'callback',
'ui.bootstrap',
'720kb.datepicker',
'ngLocale',
'directives.module',
'interceptor',
'directive.loading',
'angularUtils.directives.dirPagination',
'blog.module',
'profile.module',
'filters.module',
'chat.module',
'ui.toggle',
]);
})();
2条答案
按热度按时间wgxvkvu91#
AngularJS
$injector
是很多神奇的地方,所以如果你把它暴露在AngularJS代码之外,你可以把它连接到非AngularJS代码上,如下所示:编辑:或者,像这样简化通话。
更新:(最后一个我保证!)上面的可以很好地工作,但是你可能需要考虑公开一个定义良好的API,而不是一个通用的可注入接口。
c3frrgcw2#
我能够使用来自此post -https://stackoverflow.com/a/21997129/7411342的答案访问控制器