在ng-repeat之外接受变量

时间:2017-02-22 22:53:15

标签: angularjs

有人可以帮我解决这个问题。 我试图了解如何在我的一个函数中访问变量“new_name_input”。目标只是设置我的变量名称选择。如果有人能向我解释或/并告诉我如何才能做到,我会很高兴。

见下面的代码。

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 个答案:

答案 0 :(得分:1)

不确定我是否完全关注了您的问题,但这是您尝试做的事情吗?基本上,你需要一个&#34;。&#34;在ng-model中,以便双向绑定与基元一起使用。我使用ng-init来创建一个新对象来实现它,但我想知道你是否要将新值重新放回name对象?如果是这样,您可以删除ng-init,只需将name对象传递给传输方法。

&#13;
&#13;
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;
    }
    
}]);
&#13;
<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>
&#13;
&#13;
&#13;