2016-08-30 5 views
0

異なるファイルでコントローラーを分離しようとしています。私はここを見て次のことをしましたが、私はまだ新しいjsファイルから2番目のコントローラを読み込むことができません。私はこれを試してみました - Angularjs Impossible to load multiply ng-apps in one page even with angular.boostrapAngularjsが新しいファイルから別のコントローラーをロードしています

HTML:

<!DOCTYPE html> 
    <html lang="en" ng-app="xpCalc"> 
    <head> 
    <meta charset="UTF-8"> 
    <title>RuneScape Toolkit</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.js"></script> 
<script type="text/javascript" src="xpCalc.js"></script> 
<script type="text/javascript" src="cmbtCalc.js"></script> 
    </head> 
    <body> 
    <div ng-controller="xpCalculatorController"> 
    <p>Insert your current Level <input type="number" ng-  model="currentLevel"></p> 
    <p>Insert your desired Level <input type="number" ng-model="desiredLevel"  ></p> 
    <h2>{{xpleft() | number}}</h2> 
    </div> 

    <br> 
    <div ng-controller="CombatCalculatorController"> 
<p>Insert your Attack Level <input type="number" ng-model="ALvl"></p> 
<p>Insert your Strength Level <input type="number" ng-model="SLvl"></p> 
<p>Insert your Magic Level <input type="number" ng-model="MLvl"></p> 
<p>Insert your Range Level <input type="number" ng-model="RLvl"></p> 
<p>Insert your HitPoints Level <input type="number" ng-model="HLvl"></p> 
<p>Insert your Defense Level <input type="number" ng-model="DLvl"></p> 
<p>Insert your Prayer Level <input type="number" ng-model="PLvl"></p> 

<h2> {{combatlevel() | number}} </h2> 
</div> 
</body> 
</html> 

JSファイルONE:

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

    app.factory('xpService',function(){ 
    var service = {}; 


function calculate(level) { 
    var output = 0; 
    for (var i = 1; i < level; i++) { 
    output += (Math.floor(i + 300 * Math.pow(2, i/7))/4); 
    } 
    return output; 
    } 

service.getxpLeft = function(currentLevel,desiredLevel){ 
var currentXp = calculate(currentLevel); 
var desiredXp = calculate(desiredLevel); 

    return desiredXp - currentXp; 
    }; 

     return service; 
    }); 


app.controller('xpCalculatorController', function($scope,xpService) { 
    $scope.currentLevel = 1; 
    $scope.desiredLevel = 1; 

    $scope.xpleft = function() { 
     return xpService.getxpLeft($scope.currentLevel,$scope.desiredLevel); 
     }; 
}); 

SECOND JSファイル:

angular.module('xpCalc').controller('CombatCalculatorController', ["$scope", "$http", function($scope, $http){ 
$scope.ALvl = 1 ; 
$scope.SLvl = 1 ; 
$scope.MLvl = 1 ; 
$scope.RLvl = 1 ; 
$scope.HLvl = 10 ; 
$scope.DLvl = 1 ; 
$scope.PLvl = 1 ; 


    }]); 
+0

たcmbtCalc.jsとして保存していないましたcmbtCalc、このアプリケーションのために必要と思われる – vileRaisin

+0

@vileRaisin申し訳ありませんが、1アプリにつき1つだけ、私はそれを削除することを忘れました。しかし、それでも動作しません。 – oto260

答えて

0

両方のファイルを同時にロードされている場合は、 app変数はグローバル変数になるので、その変数にロードされているjsファイルからアクセスできます。 (非同期に注意してください)

PD angular.module('xpCalc')はアプリとは別のモジュールを作成して問題を引き起こす可能性があります。

PD 2:私のソリューションはテストされていません

+0

私はそれを削除しましたが、私のコントローラはまだ動作しません – oto260

0

私はあなたの参照のためのplunkrを作成しました。 link。 gor resolveの問題を確認してください。 完全にこの

app.controller('CombatCalculatorController', ["$scope", "$http", function($scope, $http) { 
    $scope.ALvl = 1; 
    $scope.SLvl = 1; 
    $scope.MLvl = 1; 
    $scope.RLvl = 1; 
    $scope.HLvl = 10; 
    $scope.DLvl = 1; 
    $scope.PLvl = 1; 

}]); 
0

それが正常に動作します。.. コンソール文版画のようなあなたの第二のコントローラを変更してください。

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

 
    app.factory('xpService',function(){ 
 
    var service = {}; 
 

 

 
function calculate(level) { 
 
    var output = 0; 
 
    for (var i = 1; i < level; i++) { 
 
    output += (Math.floor(i + 300 * Math.pow(2, i/7))/4); 
 
    } 
 
    return output; 
 
    } 
 

 
service.getxpLeft = function(currentLevel,desiredLevel){ 
 
var currentXp = calculate(currentLevel); 
 
var desiredXp = calculate(desiredLevel); 
 

 
    return desiredXp - currentXp; 
 
    }; 
 

 
     return service; 
 
    }); 
 

 

 
app.controller('xpCalculatorController', function($scope,xpService) { 
 
    $scope.currentLevel = 1; 
 
    $scope.desiredLevel = 1; 
 

 
    $scope.xpleft = function() { 
 
     return xpService.getxpLeft($scope.currentLevel,$scope.desiredLevel); 
 
     }; 
 
}); 
 
angular.module('xpCalc').controller('CombatCalculatorController', ["$scope", "$http", function($scope, $http){ 
 
    \t console.log('start') 
 
    
 
$scope.ALvl = 1 ; 
 
$scope.SLvl = 1 ; 
 
$scope.MLvl = 1 ; 
 
$scope.RLvl = 1 ; 
 
$scope.HLvl = 10 ; 
 
$scope.DLvl = 1 ; 
 
$scope.PLvl = 1 ; 
 
    \t console.log('end') 
 

 

 

 
    }]);
<!DOCTYPE html> 
 
    <html lang="en" ng-app="xpCalc"> 
 
    <head> 
 
    <meta charset="UTF-8"> 
 
    <title>RuneScape Toolkit</title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.js"></script> 
 
<script type="text/javascript" src="xpCalc.js"></script> 
 
<script type="text/javascript" src="cmbtCalc.js"></script> 
 
    </head> 
 
    <body> 
 
    <div ng-controller="xpCalculatorController"> 
 
    <p>Insert your current Level <input type="number" ng-model="currentLevel"></p> 
 
    <p>Insert your desired Level <input type="number" ng-model="desiredLevel"  ></p> 
 
    <h2>{{xpleft() | number}}</h2> 
 
    </div> 
 

 
    <br> 
 
    <div ng-controller="CombatCalculatorController"> 
 
<p>Insert your Attack Level <input type="number" ng-model="ALvl"></p> 
 
<p>Insert your Strength Level <input type="number" ng-model="SLvl"></p> 
 
<p>Insert your Magic Level <input type="number" ng-model="MLvl"></p> 
 
<p>Insert your Range Level <input type="number" ng-model="RLvl"></p> 
 
<p>Insert your HitPoints Level <input type="number" ng-model="HLvl"></p> 
 
<p>Insert your Defense Level <input type="number" ng-model="DLvl"></p> 
 
<p>Insert your Prayer Level <input type="number" ng-model="PLvl"></p> 
 

 
<h2> {{combatlevel() | number}} </h2> 
 
</div> 
 
</body> 
 
</html>

0

問題は、私はそれがされたNG-アプリ=「cmbtCalc」、あなたが示したコードが含まれていないものだけをcmbtCalc、

関連する問題