2016-02-19 197 views
1

我想在Angularjs中運行一個自定義的PUT,但是我無法讓我的生活得到它的工作。我需要定義UserResource和user,但只有更新函數第一個位置的參數被定義。我能做些什麼來定義用戶和UserResource?無法讀取未定義的屬性。如何定義?

(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); 
})(); 

編輯添加的更多信息

我所說的更新功能是這樣的:

<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> 

我列入參考刪除功能,因爲這是工作。

UserResource是AngularJS $resource自定義放置請求。

(function() { 

function UserResource($resource) { 
    return $resource('/api/users/:id/:controller', { 
    id: '@_id' 
    }, { 
    changePassword: { 
     method: 'PUT', 
     params: { 
     controller: 'password' 
     } 
    }, 
    update: { 
     method: 'PUT' 
    }, 
    get: { 
     method: 'GET', 
     params: { 
     id: 'me' 
     } 
    } 
    }); 
} 

angular.module('wcsdesktopApp.auth') 
    .factory('User', UserResource); 

})(); 
+0

你是如何調用'update'? 'UserResource'應該是某種服務嗎? –

+0

我用更多的信息更新了這個問題。讓我知道如果有幫助 – Rarepuppers

+0

你必須注入你的服務到你的控制器。這就是爲什麼這個部分不起作用。我可以給你一個完整的答案。 –

回答

0

您需要確保您將UserResource服務注入到您的控制器中。其中的很多方面會像下面:

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

這樣做,那麼這將在您的控制器更改update簽名如下:

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

我實現了你建議的代碼。我回來 'ReferenceError:UserResource未定義' – Rarepuppers

+0

我錯過了您命名服務'用戶'但功能'UserResource'的事實。我已經更新了答案,以反映這一點,但您可能需要考慮將它們命名爲相同以清楚說明您所調用的內容。 –

+0

對不起,很麻煩,但是,我在更新的答案中遵循了你的建議,並將名稱標準化爲'User',我仍然得到相同的錯誤。 – Rarepuppers