2017-02-22 14 views
2

Не мог бы кто-нибудь помочь мне с этим вопросом. Я пытаюсь понять, как я могу получить доступ к переменной «new_name_input» внутри одной из моих функций. Цель состоит в том, чтобы установить мою переменную с именем choosen. Я был бы рад, если бы кто-нибудь мог объяснить это мне или/и показать мне, как я могу это сделать.Признание переменной за пределами ng-repeat

См. Код ниже.

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

 

 
myApp.controller('MyCtrl',['$scope',function($scope){ 
 
    $scope.names= 
 
    [ 
 
    {nome:'Renan'}, 
 
    {nome:'Geraldo'} 
 
    ]; 
 
    $scope.newNames= 
 
    [ 
 
    {nome:'Fernando'}, 
 
    {nome:'José'} 
 
    ]; 
 
    
 
    $scope.transfer=function(novoNome,place){ 
 
    alert(novoNome.nome); 
 
    this.place = novoNome.nome; 
 
    } 
 
    
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<body ng-app="myApp"> 
 
<div ng-controller="MyCtrl"> 
 
    
 
<div style='border:1px solid black;display:inline;margin:10px 10px 10px 10px' 
 
ng-repeat='name in names'> 
 
<input type='text' ng-model='new_name_input'/> 
 
<div> 
 
<p ng-click='transfer(new_name,new_name_input)' ng-repeat='new_name in newNames'> 
 
    {{new_name.nome}} 
 
</p> 
 
</div> 
 
</div> 
 

 
</body>

Когда я нажимаю на имена написаны имена не добавляются в текстовом поле. Мне интересно, как я могу это сделать без удаления ng-repeat из кода

ответ

1

Не уверен, что полностью подчиняюсь вашему вопросу, но это то, что вы пытаетесь сделать? В принципе, вам нужен «.». в ng-model, чтобы двухсторонние привязки работали с примитивами. Я использовал ng-init, чтобы создать новый объект для достижения этого, но мне интересно, хотите ли вы вернуть новое значение в объект name? Если это так, вы можете удалить ng-init и просто передать объект name в метод передачи.

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

 

 
myApp.controller('MyCtrl',['$scope',function($scope){ 
 
    $scope.names= 
 
    [ 
 
    {nome:'Renan'}, 
 
    {nome:'Geraldo'} 
 
    ]; 
 
    $scope.newNames= 
 
    [ 
 
    {nome:'Fernando'}, 
 
    {nome:'José'} 
 
    ]; 
 
    
 
    $scope.transfer=function(novoNome,nameVm){ 
 
    alert(novoNome.nome); 
 
    nameVm.new_name_input= novoNome.nome; 
 
    } 
 
    
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<body ng-app="myApp"> 
 
<div ng-controller="MyCtrl"> 
 
    
 
<div style='border:1px solid black;display:inline;margin:10px 10px 10px 10px' 
 
ng-repeat='name in names' ng-init="nameVm = {}"> 
 
<input type='text' ng-model='nameVm.new_name_input'/> 
 
<div> 
 
<p ng-click='transfer(new_name,nameVm)' ng-repeat='new_name in newNames'> 
 
    {{new_name.nome}} 
 
</p> 
 
</div> 
 
</div> 
 

 
</body>

+0

Спасибо за ответ Адама, это было именно то, что я пытаюсь сделать. –

+0

Вы добавили массив на первом ng-повторе, я думаю, что он отлично работает для меня. Теперь я пойму, по крайней мере, попытаюсь найти решение, которое вы придумали. Спасибо! –

+0

@RenanCostaSerra, отлично! И добро пожаловать в переполнение стека. В качестве подсказки принято отмечать ответ, который наилучшим образом отвечает на ваш вопрос как «принятый» ответ. – adam0101