14

我正在开发一个网络应用程序。我正在使用 AngularJS 将所​​有文件动态加载到 UI 中。

我有一个index.html文件,所有文件都将在单击或加载时动态加载。

//index.html
<signin button> <signup button> // etc.,
//on-clicking signin button a SignIn-page will load in the below div

<div id="bodyview"></div>
// end of index.html

现在我的登录页面看起来有点像下面的结构

    /*a div where my accordion menu will load when the 
     *below submit button is clicked*/

    <div id="menu"></div>

    //other sign-in-form stuff will follow on...

    //submit button at the end
    <submit button> //only on clicking the submit button the menu will be loaded

现在我的问题是,虽然我能够加载手风琴 menu.html 文件,但我无法加载它所依赖的 css 和 js 文件。我研究过stackoverflow,但没有一个对我有用。

任何人都可以帮助确定使用 AngularJS 加载 css 和 js 依赖项的方法吗

4

5 回答 5

19

只需编写一个服务,将 CSS 和 JS 文件添加到<head>

这是一个用于动态加载 CSS 文件的示例服务。您可以轻松修改它以加载 JS 文件。

https://github.com/Yappli/angular-css-injector

于 2013-07-17T09:13:01.367 回答
6

目前我使用 angular-css:https ://github.com/door3/angular-css Imho,它是目前最好和最灵活的解决方案之一。

于 2015-03-13T11:47:12.537 回答
1

我没有使用 AngularJS 的方式,而是尝试使用 JQuery 加载文件。它对我有用。 您可以查看此链接以供参考

于 2014-06-12T06:58:32.583 回答
0
app.controller('MyCtrl', function($scope,$compile) {
    $("#my").append( $compile("<script src='my.js'>")($scope) );
});
于 2013-11-08T12:27:47.623 回答
0

我用jquery做这样的努力

/** resolve will come inside your route .when() function **/
resolve: {
        theme: function ($route, $q) {
            changeCss($route, $q);
        }
    }

/** This will come just outside your route .when() function, make sure the following function shall be in scope of the route provider **/
    var changeCss = function ($route, $q) {
        var defer = $q.defer();
        // Change the CSS as per the param received
        if ($route.current.params.css != undefined) {
            if ($route.current.params.css === ‘dark’) {
                loadCSS(“assets / css / dark.css”);
                defer.resolve();
            }
            if ($route.current.params.css === ‘light’) {
                loadCSS(“assets / css / light.css”);
                defer.resolve();
            } else {
                defer.resolve();
            }
        }
        return defer.promise;
    }
    var loadCSS = function (href) {
        var cssLink = $(“ < link rel = ’stylesheet’ type = ’text / css’ href = ’”+href + “‘ > ”);
        $(“head”).append(cssLink);
    };

我使用了 Promise,因为这将确保在显示/加载 angularjs 路由/页面之前加载 css。

于 2018-12-04T07:58:50.163 回答