如何在正确的时间加载angularjs和我的模型

时间:2013-01-30 20:09:16

标签: angularjs

我正在努力找到一种方法来获得角度和我的代码很好地发挥,因为角度很棒我知道它一定是我的问题。 我的一些模型只有静态数据,但大多数只有我从休息服务中提取的动态数据或静态/静态数据的组合。 我在这里和文档中看到的许多例子都只处理一个小的静态json数据集。

当我将角度脚本调用放入html中时,我的问题是它在我的模型加载并准备好之前尝试加载并执行。必须有一种方法来协调加载时间。

所以我试图设法确保我的模型js脚本全部被加载,然后最终在getScript调用中调用angular脚本。

我也写了一个自定义过滤器,我希望将其添加到我的模块中。当我将模块名称添加到ng-app标签时,我尝试通过getScript延迟加载角度脚本它出错,并说它无法识别我的模块名称。 如果我从ng-app中删除模块名称然后尝试初始化我的过滤器模块它会延迟加载angular.js然后它说我的过滤器方法无效,因为(我猜)它没有在模型中注册。

我确定我在某个地方遗漏了一些关键信息。 Angular必须足够智能才能加载,然后意识到我的模型需要一些时间才能到达。不只是在第一个ng-controller标签上运行我的html和bark,因为没有加载模型或者还没有完成填充模型的服务调用。

现在,如果我在我的html上添加标签,就像这样:

<html class="no-js" ng-app="yourApp">

当我在angular.js上调用

上的getScript时出现错误
  

angular.js无法加载:错误:无模块:yourApp

请帮忙。谢谢你的任何建议。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你在页面加载期间不是通过ajax调用加载angularjs吗?如果你这样做,你需要做manual bootstrap

以下是我与require.js一起使用的示例,但是使用jquery的$.getScript(),它将类似:

require(['angular', 'jquery', 'app/app-config'], function (angular) {
    'use strict';

    angular.element(document).ready(function () {
        angular.bootstrap(document, ['app']);
    });
});

在你的情况下,它将是:

$.getScript("http://code.angularjs.org/1.0.4/angular.js", function(data, textStatus, jqxhr) {
   angular.bootstrap(document, ['myApp']);
});

确保所有带有控制器,指令......的javascript文件也被加载。