我显然缺少一些概念/理解,特别是JavaScript面向对象的基础知识!
我很喜欢使用RequireJS,我的Web应用现在看起来更像是一个结构化的应用程序,而不是一堆疯狂的代码。
我只是无法理解如何/是否可能实现以下内容。
我有一个名为dataservice_base的模块,它作为基本数据服务模块。
正如您所见,我试图3次包含同一个(上面定义),但在函数的引用中,我试图通过命名变量引用每个实例,即:
dataservice_profile、dataservice_qualifications、dataservice_subjects
当然,我正在尝试为这些实例设置唯一的值,以便在模块中进一步使用..同时利用通用调用(get,puts,posts等)。
显然,我还缺少一些东西..但是任何帮助让我回到正轨的建议都将非常感激!
敬礼, David.
我很喜欢使用RequireJS,我的Web应用现在看起来更像是一个结构化的应用程序,而不是一堆疯狂的代码。
我只是无法理解如何/是否可能实现以下内容。
我有一个名为dataservice_base的模块,它作为基本数据服务模块。
define(['dataservices/dataservice'], function (dataservice) {
// Private: Route URL
this.route = '/api/route-not-set/';
var setRoute = function (setRoute) {
this.route = setRoute;
return;
}
// Private: Return route with/without id
var routeUrl = function (route, id) {
console.log('** Setting route to: ' + route);
return route + (id || "")
}
// Private: Returns all entities for given route
getAllEntities = function (callbacks) {
return dataservice.ajaxRequest('get', routeUrl())
.done(callbacks.success)
.fail(callbacks.error)
};
getEntitiesById = function (id, callbacks) {
return dataservice.ajaxRequest('get', routeUrl(this.route, id))
.done(callbacks.success)
.fail(callbacks.error)
};
putEntity = function (id, data, callbacks) {
return dataservice.ajaxRequest('put', routeUrl(this.route, id), data)
.done(callbacks.success)
.fail(callbacks.error)
};
postEntity = function (data, callbacks) {
return dataservice.ajaxRequest('post', routeUrl(this.route), data)
.done(callbacks.success)
.fail(callbacks.error)
};
deleteEntity = function (id, data, callbacks) {
return dataservice.ajaxRequest('delete', routeUrl(this.route, id), data)
.done(callbacks.success)
.fail(callbacks.error)
};
// Public: Return public interface
return {
setRoute: setRoute,
getAllEntities: getAllEntities,
getEntitiesById: getEntitiesById,
putEntity: putEntity,
postEntity: postEntity,
deleteEntity: deleteEntity
};
});
如您所见,我正在引用dataservices/dataservice,这实际上是核心AJAX调用机制(未显示,但实际上只是在包装器中使用基本的jQuery ajax调用)。
我想做的是允许将该基础dataservice模块“实例化”,如以下代码片段所示(在另一个模块内):
define(['dataservices/dataservice_base', 'dataservices/dataservice_base', 'dataservices/dataservice_base'], function (dataservice_profile, dataservice_qualifications, dataservice_subjects) {
// Set the service route(s)
dataservice_profile.setRoute('/api/profile/');
dataservice_qualifications.setRoute('/api/qualification/');
dataservice_subjects.setRoute('/api/subject/');
正如您所见,我试图3次包含同一个(上面定义),但在函数的引用中,我试图通过命名变量引用每个实例,即:
dataservice_profile、dataservice_qualifications、dataservice_subjects
当然,我正在尝试为这些实例设置唯一的值,以便在模块中进一步使用..同时利用通用调用(get,puts,posts等)。
显然,我还缺少一些东西..但是任何帮助让我回到正轨的建议都将非常感激!
敬礼, David.