Сегодня я начал работать с Restangular и Node и столкнулся с проблемой при попытке добавить нового пользователя в список пользователей в моем угловом представлении.
вид.html
<input type="text" ng-model="app.user.name" />
<input type="button" ng-click="app.addUser( app.user )" />
<ul>
<li ng-repeat="user in app.users">
<strong>{{ user.name }}</strong>
<input type="button" ng-click="app.removeUser( user )" />
</li>
</ul>
app.js
var baseUsers = Restangular.all( 'users' );
app.getUsers = function()
{
baseUsers.getList().then( function( res )
{
app.users = res;
});
};
app.getUsers();
app.addUser = function( newUser )
{
baseUsers.post( newUser ).then( function( res )
{
if( res.success == true )
{
// add new user to scope array
app.users.push( res.data ); // res.data contains the newly created user
}
});
}
app.removeUser = function( oldUser )
{
//...
}
Все вышеперечисленное работает хорошо и хорошо, за исключением одной крошечной, но раздражающей проблемы.
Если я добавлю нового пользователя, имя пользователя будет добавлено в список в представлении. НО, когда я нажимаю кнопку удаления рядом с этим пользователем, я получаю эту ошибку: TypeError: Object #<Object> has no method 'remove'
at app.removeUser
. Я предполагаю, что когда я добавляю только что созданного пользователя в массив области действия так, как я это делаю, он почему-то не знает, что это объект Restangular. Так что я думаю, что проблема заключается в app.users.push( res.data );
Как я могу решить эту проблему?
PS: Когда я обновляю страницу, функция удаления работает. Потому что тогда он снова получает все элементы автоматически через app.getUsers
, а не добавляет один элемент вручную через push
.