Добавление и удаление элементов в/из списка (AngularJS)

У меня есть два списка:

  1. список с уже существующими городами
  2. список, из которого я могу добавить новые города в свой первый список.

Если я набираю имя, все в порядке, он создает новый элемент в первом списке. Что я хочу сделать, так это добавить города в первый список, щелкнув элементы из второго списка (сначала проверьте один город, а затем подтвердите действие, нажав кнопку). A попытался получить имя элемента, на который нажали, через jQuery и ввести его во вход, чтобы иметь возможность на следующем шаге подтвердить добавление.

$(document).on('click', '.city', function () {
    var input = $('.city-input'),
        inputValue = input.val();
    input.val($(this).text());
    return false;
});

И он берет имя и помещает это имя на вход. Но когда я нажимаю кнопку - создается только пустой элемент...

Если я что-то набрал, то нажимаю кнопку - создается элемент. Затем, если я нажму любой город из второго списка - он появится в поле ввода, но после того, как я нажму кнопку подтверждения, он создаст элемент с ранее набранным текстом...

Кроме того, я пытался создать директиву, но это все еще не работает.

addCityApp.directive('searchList', function() {
    return {
        scope: {
            searchModel: '=model'
        },
        link: function(scope, element, attrs) {
            element.on('click', attrs.searchList, function(){
                scope.searchModel = $(this).text();
                scope.$apply();
            });
        }
    };
});

Вот моя ДЕМО


person Johnny Juarez    schedule 02.07.2015    source источник
comment
Пожалуйста, старайтесь не смешивать JQuery и angular. Вместо использования JQuery просто переместите эту логику в угловой ng-click="myFunction" и определите myFunction = function () {...} в своем контроллере.   -  person ryanyuyu    schedule 02.07.2015


Ответы (2)


Я изменил ваш код, используя чистый angular, вот код: http://jsfiddle.net/yxtwhos6/25/

$scope.setCity = function(city) { $scope.newItemName = city;};

Я пытался изменить ваш код как можно меньше.

person Shaohao    schedule 02.07.2015

Я бы использовал только angular и установил модель, вот мой пример: http://jsfiddle.net/yxtwhos6/16/

$scope.ultiCTRL = { selectedCity: '' };
person Johnny Ha    schedule 02.07.2015
comment
Спасибо за вашу помощь, сэр. Ваш ответ определенно работает хорошо! Но я выбрал ответ Шаохао. - person Johnny Juarez; 03.07.2015