Estoy usando angularjs para crear una entrada de lista de etiquetas.
Cuando escribo más de 3 caracteres en el control de la lista de etiquetas, se muestra el siguiente error en la consola del navegador.

AngularJS v1.2.23
ngTagsInput v2.1.0

Error: promise is undefined
SuggestionList/self.load/debouncedLoadId

Html:

<tags-input ng-model="tags" display-property="Tag_Title" placeholder="Add Tag">
<auto-complete source="loadItems($query)"></auto-complete>
</tags-input>

App.js:

$scope.loadTags = function(query) {
    return $http.get('getTags?query=' + query).then(function (response) {
        return response.data;
    });
}
-1
Ebrahim Asadi 1 sep. 2014 a las 18:11

2 respuestas

La mejor respuesta

Error arreglado. En mi código HTML, el nombre de la función era "loadItems" pero en app.js la función se llamaba "loadTags".
La solución completa es:

HTML

<tags-input ng-model="myTags" display-property="Tag_Title" placeholder="Add Tag">
    <auto-complete source="loadTags($query)"></auto-complete>
</tags-input>

app.js

$scope.myTags = [];

$scope.loadTags = function(query) {
    return $http.get('getTags?query=' + query)
        .then(function (response) {
            return response.data;
    });
}

php
Para el lado del servidor, he usado el marco Laravel

public function getTags() 
{
    $query = Input::get('query');

    return Tag::where('Tag_Title', 'LIKE', $query.'%')->get();
}
0
Ebrahim Asadi 5 nov. 2016 a las 14:31

¿Por qué esos votos negativos? el error es simple: loadTags() debe devolver una promesa, pero en su lugar está devolviendo los datos del resultado de la llamada $http.

Entonces su función loadTags() debería ser:

$scope.loadTags = function(query) {
    return $http.get('getTags?query=' + query);
}

Debe asegurarse de que el backend ofrezca una estructura de datos como esta:

[
    {text:'foo'},
    {text:'foo2'},
    {text:'foo3'}
]

En caso de que su backend ofrezca algo más, primero debe transformar el resultado; vea el código en esta pregunta para saber cómo se hace. solo vuelve a mí si necesitas más ayuda en esto.

0
Community 23 may. 2017 a las 12:06