私は10人の学生とそのランキングデータをService.jsに持っています。私はユーザーにランクの範囲を選択させて、そのランクの範囲に基づいて相対的な学生情報を表示します。たとえば、ランク2からランク5までのランクを選択すると、ランク2からランク5の学生情報のみが表示されます。工場のオブジェクトの長さAngularJS
私のデータベースには10人の学生しかいないため、最低ランクを10入力。これにより、html(Front)に戻るためにService.js(バックエンド)のデータ(オブジェクト)の長さが必要になります。
コードが更新されました。
私service.jsは以下である:
(function(angular){
angular.module('Service', [])
.factory('ServiceFun', function(){
var Objects = [
{rank: 1, name: 'id1'},
{rank: 2, name: 'id2'},
{rank: 3, name: 'id3'},];
var len = function(){
len = 0;
for (var i in Objects){
if (Objects.hasOwnProperty(i)){
len++;}
};
return len;
};
return{Objects: Objects,
len : len,};
});
})(window.angular)
私Controller.jsは以下である:コントローラを呼び出すためのHTMLの
(function(angular) {
angular.module('PModule', ['Service'])
.controller('BetweenController', ['ServiceFun', function(ServiceFun) {
this.high = 3;
this.low = 1;
this.Objects = ServiceFun.Objects;
this.count = function count(){
return ServiceFun.len;
}]);
})(window.angular);
私の主な部分は以下である:
<body data-ng-app="PModule">
<div data-ng-controller="BetweenController as value">
<div>
<span>the highest ranking which you expected</span>
<input type="number" min ="1" data-ng-model="value.low" required>
<br/>
<span>the lowest ranking which you expected</span>
<input type="number" min ="1" max = "value.count()" data-ng-model="value.high" required>
<div><h3>Show selected table</h3>
<table class="ranking">
<tr>
<th>Rank</th>
<th>Number</th>
</tr>
<tr data-ng-repeat="c in value.Objects" data-ng-if=" c.rank > value.low-1 && c.rank < value.high+1">
<td>{{c.rank}}</td>
<td>{{c.name}}</td>
</tr>
</table>
</div>
</div>
</div>
</body>
私の前の質問テキストはここにあります:
Angular JSを使用して、ユーザーに最低ランクと最高ランクを入力するよう依頼しました。次に、選択した範囲内の相対データを表示します。もちろん、入力が許可されている最も低いランク番号は、私のデータベースの中で最も低いランク(データベースの長さ)によって制限されるべきです。ここで問題が起こる!
私は、サービス内のいくつかのデータ(オブジェクト/配列)をハードコードしました。サービス内のこのオブジェクトの長さを私のコントローラに渡したいと思います。私のView(html)では、この情報をControllerから取得して、最大入力番号(最低階数)として使用できます。しかし、それは動作しませんでした。
コントローラで「this.count = ServiceFun.Objects.length」などの簡単な方法を試しましたが、うまく機能しませんでした。
誰かが$ scopeを使ってそれと同様の質問に答えたのを読んでいます。しかし私の場合、私は範囲とデータがサービスにありません。私はAngularJS 1.5.7の私のバージョンでも$ watchを見つけられませんでした。
何が起こることを期待し、何が起こる代わりのですか? –
これは、ユーザーが選択した範囲内でランク付けされたデータ通知を返します。私は私の質問の中にhtmlコードのその部分を含めなかった。多分私はすべきです。私が今それを変更できるかどうかがわかります。 –
あなたはまだ問題の内容を伝えていません。あなたは何をしていますか、何が起こると思いますか?代わりに何が起こりますか?あなたの質問には次のようなものが含まれています:*最初の入力フィールドには12を入力し、テ秒には54を入力します。テーブルには最初の行に「こんにちは」、2番目の行に「さよなら」が表示されます。 "Hi"と "Bye"となり、コンソールでもこのエラーが発生します*。見る?あなたの意図が何であり、何が問題なのかを推測させる代わりに、問題を説明するもの。 –