2013-06-25 2 views
1

Я пишу приложение, в основном два javascripts, resources_loader.js и app.js, где первый загружает некоторые json-файлы, используемые app.js.

Проблема заключается в следующем: приложение app.js (имеющее файл angular.js) должно запускаться только после resource_loader.js. Я попытался запустить угловой код внутри обратного вызова успеха (resource_loader содержит отложенный), но это, похоже, не работает. Вот мой index.html:

<!doctype html> 
<html ng-app="myapp"> 
<body> 
    <script src="angular.js"></script> 
    <script src="resources_loader.js"></script> 
</body> 
</html> 

Считайте, что я переехал в app.js resources_loader, внутри обратного вызова успеха. Каждый раз, когда я пытаюсь запустить его, угловое вызывает следующее исключение: Uncaught Error: No module: myapp.

Я предполагаю, что angular.module('myapp', []) должен запускаться до события onload, что здесь не так.

Другое дело, что я хочу использовать yepnope.js в моем проекте, как это:

<script "yepnope.js"></script> 
<script "resources_loader.js"></script> 
<script> 
    var loader = load_stuff(); 
    yepnope({ 
     test: loader.resolved(), 
     yep: ['angular.js', 'app.js', 'foo.js', 'bar.js'], 
     nope: ['fail.js'] 
    }); 
</script> 

app.js содержит угловую код. Я думаю, что он более эффективен, потому что он загружает только углы, если загружаются ресурсы. Но как я могу это сделать?

ответ

1

Удалить из ng-app<html> тега и использовать angular.bootstrap(document, ['myapp']);, чтобы стрелять из него, как только будут загружены ваши ресурсы, как это:

var app = angular.module('myapp', []); 

app.config(['$routeProvider', '$locationProvider', function($router, $location) { 
    $location.html5Mode(true); 

    $router 
    .when('/', { 
     templateUrl: 'some_template.html', 
     controller: 'myController' 
    }); 
}]); 

// and then, after everything, run 
angular.bootstrap(document, ['myapp']); 

 Смежные вопросы

  • Нет связанных вопросов^_^