我今天开始使用 Restangular 和 Node,在尝试将新用户添加到 Angular View 中的用户列表时遇到了问题。
view.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>
应用程序.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 )
{
//...
}
除了一个微小但烦人的问题外,以上一切都很好。
如果我添加新用户,用户名将添加到 View 中的列表中。但是,当我单击该用户旁边的删除按钮时,出现此错误:TypeError: Object #<Object> has no method 'remove'
at app.removeUser
.我的猜测是,当我按照我的方式将新创建的用户添加到范围数组时,它不知何故不知道它是一个 Restangular 对象。所以我认为问题出在app.users.push( res.data );
我该如何解决这个问题?
PS:当我刷新页面时,删除功能起作用了。因为它会通过 app.getUsers
再次自动获取所有项目,而不是通过 push
手动添加一项.
最佳答案
正如你所说。您插入数组的新用户根本没有被“重新规范化”。 查看 Restangular 中的 restangularizeElement 函数,并在将新接收的用户推送到用户数组之前对其进行初始化。
类似的东西:
if( res.success == true )
{
// add new user to scope array
app.users.push(
Restangular.restangularizeElement('', res.data, 'users')
);
}
空字符串表示用户没有父资源。
关于node.js - 对象不知道它是一个 restangular 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22899736/