2015-05-07 4 views
1

Это не должно быть сложно, но, прочитав множество примеров, я все еще не могу найти ответ или понять его, по крайней мере, каким-то элегантным способом. Я прочитал много ответов на SO, например this и this и this. Как ни странно, я не мог найти ничего, чтобы помочь.Удалить содержимое из div angular

Что я делаю и пытаюсь достичь?

Я называю API, который возвращает набор аккордов и текстов. Это работает отлично, когда я называю API один раз, но когда я снова ищу, аккорды и тексты добавляются в конце div. Может ли кто-нибудь посоветовать, какой угловой метод или решение я должен использовать для удаления контента из div, прежде чем он будет заполнен новыми данными?

Вот код, я в настоящее время использую:

$scope.getSongs = function(){ 

    $http({ 
     url: 'http://api.guitarparty.com/v2/songs/?query=' + $scope.song, 
     dataType: 'json', 
     method: 'GET' 
    }).success(function(response){ 
     var myEl = angular.element(document.querySelector('#chords')); 

     ////something needs to go here.....///// 

     myEl.append(response.objects[0].body_chords_html); 

    }); 
+0

Если вы хотите заменить контент, используйте myEl.html() вместо append. Это добавление, потому что вы используете append. https://docs.angularjs.org/api/ng/function/angular.element – ribsies

+0

cheers @ribsies - обработал также –

ответ

5

Как насчет:

myEl.empty() 

Взятые из SO Question

+0

благодаря @ Vlad274, как я не мог этого найти. Работала отлично. Я не искал функции jquery, но предполагаю, что в качестве угловых кораблей есть некоторые функции jquery, которые включены –

+0

@PaulFitzgerald Да, Angular будет использовать полную библиотеку jQuery, если она у вас есть, но в противном случае она использует подмножество «jQLite». К счастью, это включает в себя .empty() (Reference: https://docs.angularjs.org/api/ng/function/angular.element) – Vlad274

+0

Я знал, что он отправлен с jqlite, но не видел эту ссылку раньше на странице по их документации. Посмотрев на это, я не понял, что u cud включает всю библиотеку jquery. Большой! cheers –

0

Что ваш апи возвращение, массив объектов? Попробуйте это

$scope.getSongs = function(){ 

    $http({ 
     url: 'http://api.guitarparty.com/v2/songs/?query=' + $scope.song, 
     dataType: 'json', 
     method: 'GET' 
    }).success(function(response){ 
     var myE1 = []; 
     var myEl = angular.element(document.querySelector('#chords')); 

     ////something needs to go here.....///// 

     myEl.append(response.objects[0].body_chords_html); 

    }); 
+0

'' 'response.objects [0] .body_chords_html''' буквально полная песня с меткой html вверх –

+0

да, сделайте переменную myE1 пустой, прежде чем добавлять данные. – Ritesh

+0

другим способом было использовать '' 'html()' '', отлично работал и –

Смежные вопросы