将参数传递给 Ressource 的方法回调

Pass parameter to Ressource's method callback

本文关键字:方法 回调 Ressource 参数传递      更新时间:2023-09-26

如果我成功更新 API 中的某些内容,我正在尝试更改一些模型数据:

this.saveProject = function(project) {
  var editedProjectSupport = {
        /* some data */
  };
  SupportTimeTracks.update({id: project.backendId}, editedProjectSupport,
    function() {
      // There :
      project.department = controllerScope.edit.project.department;
      project.timetrack = controllerScope.edit.project.timetrack;
      growl.success('Project support successfully edited');
    },
    function(result) {
      growl.error('Project support couldn''t be edited.');
      console.log(result);
    });
  this.edit.project = {};
  $scope.$broadcast('edit.project');
};

但是我无法访问成功回调function()中的project。无论如何都可以在参数或其他东西中传递它。

如何更新我的project.departmentproject.timetrack

该函数是从视图中调用的,project函数中是本地的(尽管它引用了作用域中存在的元素)

this.saveProject = function(project) {
  SupportTimeTracks.update({id: project.backendId}, editedProjectSupport,
    function() {
      // There : if you are not *shadowing* project variable, you MUST have access to project variable.
    }
  );
};

你的函数是一个闭包,project是一个在this.saveProject中定义的变量,所以如果你没有在里面定义另一个同名的变量(隐藏你的第一个变量),project必须定义并用你传递给this.saveProject的值,你必须有权访问它。

代码示例:

var closure = function(project){
  // I grab project var here
  setTimeout(function(){
    alert('there is no project shadowing: '+ project);
  }, 100);
};
closure('my project var');
var closureWithShadowing = function(project){
  // I grab project var here ... but
  setTimeout(function(){
    var project = 'I eat project variables'; // I have created a new var with the same name
             // so, I'm shadowing the original one.
    alert('project shadowing: '+ project);
  }, 500);
};
closureWithShadowing('my project var');