无法读取未定义的属性。如何定义?

时间:2016-02-19 14:56:07

标签: javascript angularjs angular-fullstack

我正在尝试在Angularjs中运行自定义PUT,但是我无法让我的生活得到它的工作。我需要定义UserResource和user,但只定义更新函数第一个位置的参数。如何定义user和UserResource?

string.Replace("\r\n", "\n").Replace('\r', '\n').Replace('\n', 'replacement');

编辑以添加更多信息

我这样调用更新函数:

(function () {

class AdminController {
  constructor(User, Auth) {
    this.users = User.query();
    this.Auth = Auth;
  }

//here user is defined and I can run the delete function
  delete(user) {
    user.$remove();
    this.users.splice(this.users.indexOf(user), 1);
  }

// and if I put user into the first position it is defined but UserResource isn't 
// as written here it isn't defined either. 
  update(UserResource, user) {
    var $id = user._id;
    UserResource.update({ id:$id }, user);
  }
}

angular.module('wcsdesktopApp.admin')
  .controller('AdminController', AdminController);
})();

我包含了删除功能以供参考,因为它正在运行。

UserResource是一个AngularJS $resource自定义放置请求。

  <table>
    <tr>
      <a ng-click="admin.update(user)" class="update"><span class="fa fa-refresh fa-2x"></span></a>
    </tr>
    <tr>
      <a ng-click="admin.delete(user)" class="trash"><span class="fa fa-trash fa-2x"></span></a>
    </tr>
  </table>

1 个答案:

答案 0 :(得分:0)

您需要确保将UserResource服务注入控制器。其中一种方式如下:

angular.module('wcsdesktopApp.admin').controller('AdminController', AdminController);
AdminController.$inject = [ 'User'];
function AdminController(User) {}

这样做会将控制器中的update签名更改为以下内容:

update(user) {
    User.update(); // Do whatever update.
}