Добавяне и премахване на елементи към/от списъка (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
Благодаря ви за помощта, сър. Вашият отговор определено работи добре! Но аз избрах отговора на Shaohao. - person Johnny Juarez; 03.07.2015