2015-06-07 2 views
0

Я пытаюсь выбрать данные из моего файла JSON с
$ ресурса запрос:Как выбрать элемент из json-данных с помощью ngResource?

Im, используя глобальную переменную productSelected в мой контроллер,

, но когда я изменить это значение с нг -модели, которые не влияют на модель, а значение ссылки все равно одинаково!

У кого-нибудь есть идея, пожалуйста?

Вот мой код:

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

      myApp.factory('Produits',['$resource', function ($resource) { 
       return $resource('data/produits.json/:id',{id: "@id"}, 
         { 
        'get': {method:'GET'}, 
        'save': {method:'POST'}, 
        'query': {method:'GET', isArray:true}, 
        'remove': {method:'DELETE'}, 
        'delete': {method:'DELETE'} 

         } 
       ); 
      }]); 
    myApp.controller('produitsCtrl', function($scope, $http,Produits,$log) { 

    $scope.productSelected=0; 

       Produits.query(function(data){ 
        $scope.produits=data; 
        $scope.reference=$scope.produits[$scope.productSelected].reference ; 
        }); 

     }); 
     <div ng-app="myApp" > 

       <div ng-controller="produitsCtrl"> 

       Product : <input type="text" ng-model="productSelected"/> {{ productSelected }} <br/> 
       Reference : {{reference}} 
       </div> 
      </div> 

produits.json

[{ 
"id" : 1, 
"reference": "AA" 
}, 
{ 
"id" : 2, 
"reference": "BB" 
}] 
+0

Может быть потому, что ваш Produits.query получает вызов только один раз даже после изменения значения $ scope.productSele cted с использованием текстового поля ввода. Так что я думаю, что вам нужно вызывать Produits.query каждый раз, когда когда-либо происходит изменение значения productSelected. – shreyansh

+0

Есть ли другое решение, чтобы избежать вызова запроса каждый раз, потому что у меня есть много свойств для элементов (id, reference, name, type..etc) – carine

ответ

1

Просто взгляните на этот код может быть полезным для вас

<body ng-app="myApp" data-ng-controller="MainCtrl" id="div1"> 
Product : <input type="text" ng-model="productSelected" ng-change="fun(productSelected)"/> {{ productSelected }} <br/> 

Reference :<p ng-model="reference"> {{reference}} </p> 


<script> 
    var app = angular.module('myApp', []); 

    app.controller('MainCtrl', function($scope){ 


    $scope.productSelected=0; 
    $scope.produits= [{ 
      "id" : 1, 
      "reference": "AA" 
      }, 
      { 
      "id" : 2, 
      "reference": "BB" 
      }]; 
    $scope.reference=$scope.produits[$scope.productSelected].reference; 
    $scope.fun=function(val){ 
    //alert(val) 
    if(val!=undefined && val!=null && val!='') 
    $scope.reference=$scope.produits[$scope.productSelected].reference; 
    else 
    $scope.reference=$scope.produits[0].reference; 
    }; 
    }); 
    </script> 
</body> 
+0

Thks много, но здесь вы не используете _ngResource_ сервис для инъекций ** Produits * * в контроллере я искал, как оптимизировать свой код. – carine