可以說我有一個應用程序,我不知道它是參考名稱還是它的定義。你可以注入依賴到現有的角應用程序?
比方說,我有另一個我創建的模塊,(導航模塊)我想在現有的角度應用程序中注入此導航模塊,以便它可以正常工作。
<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