2016-08-11 7 views
12

現在、Angerar JSプロジェクトは、angularAMDに基づいています。AngularJSを使用したファイルのハッシュ

リンク:ここhttp://marcoslin.github.io/angularAMD/#/home

我々は、コントローラではなく、すべてのファイルが必要とするのみで、必要な依存ファイルが含まれています。

例えば、

define(['angularAMD', 'common/services/service1', 'module1/services/service2',], function (angularAMD) { 
    'use strict'; 

    angularAMD.controller('abcController', function ($scope, service1, service2) { 

       // controller code goes here 
    } 
私は 兵卒ハッシュを試してみましたが、


うなり声は、ハッシングが、ハッシュされたファイルの変更の場所を提供します。

これは、アプリケーションの実行に失敗した結果、個々のコントローラ内のファイルのパスを変更しません。すなわちservice1, service2

質問
我々は新しいファイルが含まれている場合、ファイルをハッシュする方法があった場合、私は不思議でしたか?

この問題を解決する他の方法はありますか?

ありがとうございました

+0

のように見えるかもしれサービス1&サービス2 –

+0

@steveサービスのソースを共有してください1とサービス2私はちょうどこれはコントローラによって使用されている任意のjsファイルにすることができます問題を置くと思う。 – Abhimanyu

+0

私の考えは、service1と2のファイルが正しく設定されていないということです。コントローラを参照するために個々のプロバイダを適切に登録するかどうかを指定してセットアップしないでください。 –

答えて

2

どのようにモジュールをセットアップしますか?あなたのmain.jsこの

'use strict'; 
require.config({ 
    waitSeconds: 0, 
    urlArgs: "bust=v1.0.0", 
    paths: { 
     bootstrap: 'Scripts/bootstrap.min', 
     jquery: 'Scripts/jquery-1.10.2.min', 
     angular: 'Scripts/angular.min', 
     angularRoute: 'Scripts/angular-route.min', 
     angularAMD: 'Scripts/angularAMD.min', 
     app: 'ngApp/app', 
     appConfig: 'ngApp/app.config', 

     /*register Services - Start*/ 
     service1: 'ngServices/Common/service1', 
     service2: 'ngServices/module/service2', 
     /*register Services - End*/ 

     /*register Filters - Start*/ 

     /*register Filters - End*/ 

     /*register Controllers - Start*/ 

     /*register Controllers - End*/ 



    }, 

    // specifying library dependencies 
    shim: { 
     'bootstrap':{ deps:['jquery']}, 
     'angular': { deps: ['jquery'], exports: 'angular' }, 
     'angularRoute': { deps: ['angular'] }, 
     'angularAMD': { deps: ['angular'] } 
    }, 

    // define application bootstrap 
    deps: ['app'] 
}); 

とあなたのindex.htmlで

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
</head> 

<body data-ng-controller="appController as appCtrl" ng-cloak> 
     <div > 
       <ng-view></ng-view> 
     </div> 
    </div> 
    <script data-main="main" src="Scripts/require.js"></script> 
</body> 
</html> 

とあなたのコントローラ

'use strict'; 
define(['angularAMD', 'service1', 'service2'], 
function (angularAMD) { 

    angularAMD.controller('abcController', ['service1', 'service2', 
    function (service1, service1) { 
     var self = this, 
     // your code 
    }]); 
}); 
+0

しかし、モジュールに基づいてファイルを読み込むという考えは意味をなさないでしょう。 main.jsにservice1とservice2を含めるとファイルがロードされるためです。 service1: 'ngServices/Common/service1'、 service2: 'ngServices/module/service2'、 – Abhimanyu

+0

@Abhimanyu。いいえ、動的に読み込まれます。 main.jsにservice1またはservice2のパスを指定していますファイルは、私たちが['service1' ..]をangularAMD ' –

+0

で定義したときにのみロードされます。しかし、大きなプロジェクトでは、main.js内のすべてのファイルパスを設定することは意味がありますか?main.jsを汚染するので他のアイデアはありますか? – Abhimanyu

関連する問題