2
からプロトタイプを削除し、私が今持っているコードです:
// Factory
angular.factory('Student', function() {
var defaults = {
StudentId: null
};
var Student = function(params) {
angular.extend(this, angular.copy(defaults), params);
};
// Prototype function for Student
Student.prototype.hasStudentId = function() {
return this.StudentId != null;
};
});
// Service
angular.service('StudentService', ['Student', '$resource', function(Student, $resource) {
var service = {};
service.student = $resource('student/:studentId'. {} { load: {method: 'GET'} });
service.loadStudent = function(studentId) {
var currentStudent = service.student.load(studentId); // HTTP call
currentStudent.$promise.then(function() {
// I expect the object currentStudent would have hasStudentId() prototype function, but it's not
angular.extend(currentStudent, new Student(currentStudent));
// However, if I use 'new' keyword, studentObj has prototype hasStudentId() function
var studentObj = new Student(currentStudent);
});
};
return service;
}]);
見ての通り、私はcurrentStudent
オブジェクトを拡張した後、currentStudentはプロトタイプ機能hasStudentId()
を持っていません。ただし、new Student(currentStudent)
を使用すると、プロトタイプ関数が正しく機能します。
Angular.extendは、prototype
の機能を無視しますか?
現在、currentStudent
オブジェクトには$resource
のプロトタイプ関数しかありません。
angular.extendの代わりに何を使用しますか? – KimchiMan
$リソースを必要な機能で充実させてみませんか? – PerfectPixel
$リソースを充実させるにはどうすればよいですか?私に少しのサンプルコードをお願いしますか? – KimchiMan