可以说我有一个应用程序,我不知道它是参考名称还是它的定义。你可以注入依赖到现有的角应用程序?
比方说,我有另一个我创建的模块,(导航模块)我想在现有的角度应用程序中注入此导航模块,以便它可以正常工作。
<html ng-app="appA">
<body>
<!-- navController exists inside another app -->
<nav id="testElement" controller="navController"></nav>
</body>
</html>
实施例:
$(document).ready(function() {
var nav = document.getElementById('testElement');
if (!angular.element(nav).length) return;
var appElement = angular.element('[ng-app]');
console.log('appname', appElement.attr('ng-app'));
var appToInject;
if (!appElement.length) {
// Manually run the new app from within js without a ng-app attrib
appToInject = angular.module('CustomModuleForNavigation', []);
angular.bootstrap(nav, ['CustomModuleForNavigation']);
} else {
appToInject = angular.module(appElement.attr('ng-app'), []);
}
if (angular.isUndefined(appToInject)) return;
console.log('winning?', appToInject)
appToInject.controller('navController', function($scope) {
console.log('extending app in new ctrl!', $scope);
});
});
你的意思是在你通过简单添加一个脚本标签把一个小部件放在别人的网站上吗?不是100%清楚这里的目标是什么 – charlietfl
在某种意义上来说,是的,我需要通过向页面添加脚本来扩展现有的应用程序,我已经添加了一个示例。 –
答案是肯定的。而且你没有提供足够的信息,因为答案在很大程度上取决于事实,如果它是你自己的应用程序,或者你正在窃取其他人的应用程序。无论如何,这是可怕的设计解决方案,除非它是绝对必要的(第三方浏览器插件或特定网站)。 – estus