jQuery - ng-view没有运行JavaScript,除非脚本在渲染的html中

时间:2015-07-10 02:18:24

标签: javascript jquery angularjs

我的<script src="">之外有ng-view,脚本本身是一个jQuery函数,可以更改ng-view内的内容,但除非我放{{1}在我正在渲染的html页面内。这是非常烦人的并打破了DRY规则(不要重复自己),因为我现在必须将所述脚本放在我的所有html文件中,因为将它放在index.html的底部是行不通的。

这是我的index.html

<script src="">

注意:“...”表示代码太大而必须取出才能读取。

现在在<!DOCTYPE html> <html ng-app="enitoniApp"> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Stylesheets --> <link rel="stylesheet" href="global.css"> <link rel="stylesheet" href="pages/css/home.css"> <!-- Fonts --> <link href='http://fonts.googleapis.com/css?family=Roboto:400,300italic,300,100italic,100,400italic,500,500italic,700,700italic,900italic,900' rel='stylesheet' type='text/css'> </head> <body ng-controller="mainController"> ... <!-- Angular --> <div class="wrap"> <div ng-view></div> ... </body> <!-- Javascripts --> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script> <script src="js/angular_script.js"></script> <!--- Global Script --> <script src="js/global.js"></script> <!--- Content --> <script src="js/contentinject.js"></script> </html> 内,我们有:

contentinject.js

修改了以下的DOM:

home.html(注入ng-view的内容,也是我们的部分示例)

/** Content Injection **/

function isValid() {
    $.getJSON("/js/content.json", function (d) {
        console.log("json parsing of 'content.json' performed successfully.");
    }).fail(function (d, textStatus, error) {
        errorCall("Fatal error", "json", "Something went wrong and the site may not properly display, if the problem persists contact the website administrator.<br/><br/>Sorry about that.","<b>Couldn't parse 'content.json'</b><br/><br/>" + error)
    });
}
setTimeout(isValid, 2000)

$.getJSON("/js/content.json", function (data) {
    $(".lander .title").text(data.lTitle);
    $(".lander .subtitle").text(data.lSubtitle);
    $(".lander .text").html(data.lText.split('\n').join('<br />'));
});

现在你可以看到,脚本清晰地位于文档的底部,也位于angular.js下,所以它应该加载并注入部分内容,但事实并非如此。如果我将<body> <div class="lander"> <div class="w-ctrl"> <div class="container"> <div class="title-con"> <div class="title"></div> <div class="subtitle"></div> </div> <div class="text-con"> <div class="text"></div> </div> </div> </div> </div> </body> 放在home.html中,它就可以了。

有什么方法吗?

1 个答案:

答案 0 :(得分:0)

如果您已为视图指定了某个控制器,则每次加载视图时都会调用控制器。在这种情况下,您可以在调用它时立即在控制器中执行一些代码。

这样的事情:

<ion-nav-view ng-controller="indexController" name="other"></ion-nav-view>

并在您的控制器中:

app.controller('indexController', function($scope) {

    /*
        Write some code directly over here
        without any function, and it will be executed every time your view loads.
        Something like this:
    */

    $scope.xyz = 1;
});

您可以在this回答..

中找到更多详情