gpt4 book ai didi

javascript - 迁移 Angular 1 应用程序以使用模块加载器时出现加载顺序问题

转载 作者:行者123 更新时间:2023-12-03 06:07:34 25 4
gpt4 key购买 nike

我必须更改我们的 Angular 1 应用程序之一以使用模块加载器 (SystemJs),但我遇到了加载顺序问题,我不确定如何正确解决它。

这就是我加载应用程序 (/app.js) 的方式:

import angular from 'angular';
import './component/module';

angular.module('myApp',['component']);

// bootstrapping stuff...

然后是模块定义,其中包含来自组件的路由内容(/component/module.js):

import angular from 'angular';
import 'angular-route';
import './CompController';

export default angular.module('component',['ngRoute']);

angular.module('component').config(function($routeProvider){
$routeProvider.when('foo/bar',{
templateUrl:'component/template.html',
controller:'CompController'
});
});

以及来自组件的 Controller (/component/CompController.js):

import angular from 'angular';

export default angular.module('component').controller('CompController',function(){
// do something useful here...
});

当我运行此程序时,出现以下错误:

Uncaught (in promise) Error: (SystemJS) [$injector:nomod] Module 'component' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

它被抛出在“CompController”中,因为当它被加载时,作为“组件/模块”的依赖项,的 Angular 模块定义“组件”尚未完成。

有人可以解释一下在模块可用后如何正确初始化 Controller 吗?我犯了一些基本错误吗?

最佳答案

好吧,我有解决方案,而且非常简单:我必须重构 CompController.js 以仅导出 Controller 函数(纯 JavaScript 函数)而不是 Controller 对象,并将其传递到 Angulars Controller() 函数中module.js,模块初始化后。

CompCotroller.js:

export default function(){ // <= export only the pure function
// do something useful here...
}

模块.js:

import angular from 'angular';
import 'angular-route';
import CompController from './CompController'; // <= load it...

export default angular.module('component',['ngRoute']);

angular.module('component').controller('CompController', CompController); // <= ...and create the controller here. That's it :)

angular.module('component').config(function($routeProvider){
$routeProvider.when('foo/bar',{
templateUrl:'component/template.html',
controller:'CompController'
});
});

关于javascript - 迁移 Angular 1 应用程序以使用模块加载器时出现加载顺序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39464863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com