Я сделал следующий плункер:
https://plnkr.co/edit/Ff2O2TGC4WLaD62fJmvA?p=preview
Я хотел бы, чтобы значение ввода было item.name
.
Вот код:
<body ng-app="myApp">
<div ng-controller="MyController">
<ul ng-repeat="item in collection">
<li ng-click="edit('{{item.name}}')">{{item.name}}</li>
</ul>
</div>
<input name="myinput" ng-model="myinput" />
</body>
Js:
var app = angular.module('myApp', [])
.controller('MyController', function($scope, $http) {
$scope.collection = [
{name:'foo'},
{name:'bar'},
{name:'foobar'},
{name:'barfoo'},
];
$scope.edit = function(current_name) {
this.myinput = current_name;
console.log(current_name);
}
})
Таким образом, здесь есть несколько проблем. Во-первых, как вы передаете item.name
в функцию edit
. Вместо edit('{{item.name}}')
нужно просто edit(item.name)
.
Следующий this.myinput
в script.js
не будет работать; он должен быть $scope.myinput
.
Наконец, input
в разметку должен находиться внутри div
который определяет контроллер.
Я модифицировал Plunkr для работы: https://plnkr.co/edit/mslpklTaStKEdo64FpZl?p=info
Угловое выражение не может иметь метки интерполяции. Правильный синтаксис, как если бы это был обычный Javascript:
<li ng-click="edit(item.name)">{{item.name}}</li>
Вам не нужно вызывать функцию. Просто делать.
<li ng-click="$parent.myinput = item.name">