2016-07-05 9 views
0

私は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を見つけられませんでした。

+0

何が起こることを期待し、何が起こる代わりのですか? –

+0

これは、ユーザーが選択した範囲内でランク付けされたデータ通知を返します。私は私の質問の中にhtmlコードのその部分を含めなかった。多分私はすべきです。私が今それを変更できるかどうかがわかります。 –

+0

あなたはまだ問題の内容を伝えていません。あなたは何をしていますか、何が起こると思いますか?代わりに何が起こりますか?あなたの質問には次のようなものが含まれています:*最初の入力フィールドには12を入力し、テ秒には54を入力します。テーブルには最初の行に「こんにちは」、2番目の行に「さよなら」が表示されます。 "Hi"と "Bye"となり、コンソールでもこの​​エラーが発生します*。見る?あなたの意図が何であり、何が問題なのかを推測させる代わりに、問題を説明するもの。 –

答えて

0
(function(angular) { 
angular.module('PModule', ['Service']) 
.controller('BetweenController', ['ServiceFun', function(ServiceFun) { 
    this.high = 3; 
    this.low = 1; 
    this.Objects = ServiceFun.Objects; 
    this.count = ServiceFun.len;  
    }]); 
})(window.angular); 

オブジェクトではないObjcts

+0

はまだ –

+0

:-(動作しませんでした私は再びそれをよく見ていたし、複数の方法を試してみましたが、私はまだそれを動作させることができませんでした。しかし、私は、少なくともあなたが私によい方向を指すと思います。私は非常にそれを感謝しています。 –

+0

私が試しました今のところ私はまだそれを動作させることができませんでしたが、少なくとも私は良い方向を指摘したと思います。私は非常に感謝します。まず、私は "object.keys()length" .js。コード全体はそれを全く認識できません。Font(html)にないService.jsにあると思います。次に、カウント関数をコード化してプロパティをカウントする必要があります。 Service.jsでループを使用して。それは同様に動作しませんでした。改善は、少なくとも全体のプログラミングがそれを認識しますが、それはちょうど私が必要とする長さ情報を得ることができなかったということでした。 –

関連する問題