私は JavaScript と AngularJS の両方が初めてです。建物管理システムと通信するアプリを構築しています。これには、BMS に接続してそこからデータを取得するサービスを含む「JaceMod」というモジュールがあります。Dygraphs を使用してデータをグラフ化する機能を追加し、グラフをインスタンス化してデータを入力するディレクティブを作成しました。
Dygraphs ディレクティブを「dygraphs」というモジュールの別のファイル「angular-dygraphs.js」に入れたいので、後で再利用でき、このモジュールを「JaceMod」の依存関係として必要とします。このような:
'use strict';
console.log('Loading angular-dygraphs.js');
angular.module('dygraphs', []);
angular.module('dygraphs').directive('mrhDygraph', function ($parse) {
return {
...etc ...
};
});
そしてメインファイル「app.js」:
'use strict';
console.log('Loading app.js');
angular.module('JaceMod', ['dygraphs']);
angular.module('JaceMod').factory('JaceData', function ($http, $timeout) {
var JaceDataService = {};
...etc ...
return JaceDataService;
});
angular.module('JaceMod').controller('myCtrl', function myCtrl($scope, JaceData) {
JaceData.initialise($scope);
JaceData.subscribe($scope);
});
html は次のようになります。
<html lang="en" ng-app="JaceMod">
<head>
<meta charset="utf-8">
<title>AngularJACE</title>
<style type="text/css">
body {font-family: Trebuchet MS,Helvetica,Arial,sans-serif; }
</style>
</head>
<body ng-controller="myCtrl">
<div mrh-dygraph="graphData"
mrh-dygraph-options="{xlabel: 'Local Time', legend: 'always',
showRangeSelector: true, labels: ['Time', 'Outside'],
ylabel: 'Temperature (ºC)', height: 420}"
style="width: 100%; height 420px;"/>
<script src="dygraph-combined.js"></script>
<script src="angular.js"></script>
<script src="angular-dygraphs.js"/>
<script src="app.js"></script>
</body>
しかし、この html をロードすると、「Angular-dygraphs.js をロードしています」というコンソール メッセージに続いて、「エラー: モジュールがありません: JaceMod」というエラーが表示されます。にログ メッセージが表示されませんapp.js
。最後の 2 つの JavaScript ファイル ラウンドの読み込み順序を切り替えると、app.js が読み込まれ、エラー メッセージが「エラー: モジュールがありません: dygraphs」であることがわかります。2 番目にリストされたファイルはロードされていないようです。
コードを angular-dygraphs.js から app.js にコピーし、ディレクティブを独自のモジュールに残すと、機能します。
なぜこうなった?モジュールを独自のファイルなどに入れることはできませんか? ドキュメントはあまり役に立ちませんでした...
追加するために編集
html と js ファイルは、dygraphs と angular ライブラリを含め、すべて同じディレクトリにあります。ファイルからhtmlをロードしています。サーバーは関係ありません。
アップデート
angular-dygraphs.js からすべてを app.js にコピーし、angular-dygraphs.js 全体をコメントアウトしました。まだ問題が発生していますが、app.js が読み込まれません。