Ich habe eine Liste von Suchanfragen.Entfernen Sie ein gerade erstelltes Objekt auf AngularJs
search.html:
<ul class="col-xs-12" ng-repeat="search in searchesCtrl.searches">
<li>
<a href="#">{{search.url}}</a><button class="btn btn-danger" ng-click="searchesCtrl.deleteSearch(search)">Delete</button>
</li>
</ul>
<div class="input-group">
<input type="text" class="form-control" ng-model="searchesCtrl.newSearch.name"/>
<input type="text" class="form-control" ng-model="searchesCtrl.newSearch.url"/>
<span class="input-group-btn">
<a class="btn btn-primary" ng-click="searchesCtrl.addNewSearch()">Go</a>
</span>
</div>
search.controller.js:
'use strict';
(function() {
class SearchesComponent {
constructor($http) {
this.$http = $http;
this.searches = [];
}
$onInit() {
this.$http.get('/api/searches')
.then(response => {
this.searches = response.data;
});
}
addNewSearch() {
if (this.newSearch) {
this.$http.post('/api/searches', {
url: this.newSearch.url,
name: this.newSearch.name
}).then(() => {
this.searches.push(this.newSearch);
this.newSearch = '';
});
}
}
deleteSearch(search) {
this.$http.delete('/api/searches/' + search._id)
.then(() => {
this.searches.splice(this.searches.indexOf(search),1);
});
}
}
angular.module('myApp')
.component('searches', {
templateUrl: 'app/searches/searches.html',
controller: SearchesComponent,
controllerAs: 'searchesCtrl'
});
})();
Wenn ich versuche, eine Suche zu entfernen, die ich habe gerade hinzugefügt, ohne die Seite zu aktualisieren, es funktioniert nicht.
Die ng-click="searchesCtrl.deleteSearch(search)"
ruft /api/searches/undefined
.
Ich versuche, ohne die $ Index-Lösung zu arbeiten. Ist es möglich ?
In welchem Teil Ihrer 'function' bekommen Sie' undefined'? – developer033
Der Objektparameter "search._id" ist nicht definiert, da er gerade erstellt wurde. –
Liefert Ihr Server neu erstellte Objekte auf '$ http.post ('/ api/suche' ..). Dann (newSearch => ...'? Sie müssen irgendwie 'search._id' vom Server bekommen. –