0

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

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

所以我试图设计方法来确保我的模型 js 脚本都已加载,然后最终在 getScript 调用中调用角度脚本。

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

我确定我在某处遗漏了一些关键信息。Angular 必须足够聪明才能加载,然后意识到我的模型需要一些时间才能到达。不只是在第一个 ng-controller 标记处运行我的 html 和吠叫,因为模型尚未加载或填充模型的服务调用尚未完成。

现在,如果我像这样在我的 html 上放置一个标签:

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

当我在 angular.js 上调用 getScript 时出现错误

angular.js 加载失败:错误:没有模块:yourApp

请帮忙。感谢您的任何建议。

4

1 回答 1

0

如果我理解正确,您不是在页面加载期间加载 angularjs,而是通过 ajax 调用加载?如果你这样做,你将需要手动引导

这是我使用 with 的示例require.js,但使用 jquery's$.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 文件都已加载。

于 2013-01-30T20:23:04.563 回答