2014-02-21 4 views
0

Привет У меня есть следующая форма, в которой у меня есть два поля ввода и ng-repeat, который отображает результаты. В основном в моем контроллере он извлекает данные из db и загружается в nt-repeat.Автоматическое заполнение полей ввода из фильтра в Angularjs

<td> 
    <div> 
     <input type="text" ng-model="item.logo"> 

     </div> </td> 

     <td> 
     <div> 
      <input type="text" ng-model="item.name" > 

     </div> 
     </td> 


<tr ng-repeat="aa in addlaborrates | filter:{name:item.name} "> 
       <td>{{aa.name}}</td> 
       <td>{{aa.lago}}</td> 
      <td>{{aa.id}}</td> 
    </tr> 

Когда я ввожу элемент в поле ввода, вы выбираете соответствующие элементы в ng-repeat. То, что я пытаюсь сделать, - это когда я печатаю поле ввода имени, когда оно фильтрует. Я хочу, чтобы поля логотипа также автоматически заполнялись соответствующим значением. Пожалуйста, дайте мне знать, как этого достичь. Благодаря

+1

Вы написали 'логотип' неправильно: {{aa.lago} }, это то, что вы имеете в виду? или, возможно, вы хотите также фильтровать по логотипу: http://jsfiddle.net/V9bgn/ – QuarK

+0

@QuarK Так, как в вашем примере, если я набираю что-то в первом окне, я пытаюсь заполнить соответствующий второй ящик при вводе сначала –

ответ

2

Вы можете создать фильтр, как в http://jsfiddle.net/V9bgn/1/

.filter('getLogo', function() { 
    return function(array, value) { 
    var ret = []; 
    angular.forEach(array, function(item) { 
     if (item.name.indexOf(value) > -1) { 
      ret.push(item.logo); 
     } 
    }); 

    return ret[0] || ''; 
    };  
}); 

И затем использовать его в контроллере:

$scope.$watch('item.name', function(val) { 
    $scope.item.logo = $filter('getLogo')($scope.addlaborrates,val); 
}); 
+0

Проработал хорошо. благодаря –

Смежные вопросы