2016-08-31 4 views
0

apiからデータを消費しています。通常のリストビューでチェックボックスと一緒に表示しています。リソースの完全なリストが1つあり、選択されたリソースを別のリソースにAngularJSのリストの一番上にあるチェックボックスをオンにする方法

は現在、この

enter image description here

期待リストは以下のようになりたいと、ここでenter image description here

はNGリピートループでの私のチェックボックスである

<div class="search" ng-repeat="resource in ViewData.resources"> 
    <input type="checkbox" value="{{resource.resourceName}}" ng-model="resourceList[resource.resourceId]" 
          ng-click="resourceChange(resource.resourceId)" 
          ng-checked="checkSelectedResource(resource.resourceId)"> 
    <label class="list{{resource.resourceId}}" >{{resource.resourceName}}</label> 
</div> 
+0

'checkSelectedResource(resource.resourceIdは)'何、真または偽を返しますか? –

+0

これをチェックすると更新が必要な場合は、フィルタ - > https://docs.angularjs.org/api/ng/filter/filterで行います。または、一度それをソートし、httpコールからの約束よりも更新しないとうまくいけば? – AirBorne04

+0

@Pankajその返り値「true」 –

答えて

1

王の例: http://jsfiddle.net/irhabi/fqdqbpbc/

HTML

<div ng-controller="MyCtrl"> 
    <div class="search" ng-repeat="fruit in fruits | orderBy:['-checked','name']:false"> 
    <input id="fruit{{$index}}" type="checkbox" ng-model="fruit.checked"> 
     <label for="fruit{{$index}}">{{fruit.name}}</label> 
    </div> 
    <br/> 
    <p>fruits model:</p> 
    <pre>{{fruits|json}}</pre> 
</div> 

JS

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

myApp.controller('MyCtrl', MyCtrl); 

function MyCtrl($scope) { 
    $scope.fruits = [ 
     {name:'apple',checked:false}, 
     {name:'banana',checked:false}, 
     {name:'orange',checked:false} 
    ]; 
} 
+0

あなたの入力に感謝します。しかし、このアプローチは私のシナリオでは機能しませんでした。 –

+0

@SenthilSivaramakrishnanこれは単なる例です。あなたのViewData.resourcesがどのように見えるかわからない、またはresourceChange()など – krutkowski86

1

ng-ifで制御できます。 ng-checkedの項目に該当する場合、あなたがしたい場合は、この

<div class="search" ng-repeat="resource in ViewData.resources"> 
    <input type="checkbox" value="{{resource.resourceName}}" ng-model="resourceList[resource.resourceId]" 
          ng-click="resourceChange(resource.resourceId)" 
          ng-checked="$first"> 
    <label class="list{{resource.resourceId}}" >{{resource.resourceName}}</label> 
</div> 

にあなたのコードは、あなたが簡単にトリガすることができますng-show="$first"

+0

私はこのアプローチを初めて利用しているので、サンプルコードを共有することができれば助かります。ありがとう! –

0

変更を使用

$scope.checkFirst=function(first){if(first == true){ //your function }} 

のようなコントローラーの最初の要素のイベントをクリックしてすることができますたとえば名前で注文する

ng-repeat="resource in ViewData.resources | orderBy://name for example 
関連する問題