Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 我可以重写节点\模块文件中定义的方法吗?_Reactjs_Meteor_Node Modules_Syncfusion - Fatal编程技术网

Reactjs 我可以重写节点\模块文件中定义的方法吗?

Reactjs 我可以重写节点\模块文件中定义的方法吗?,reactjs,meteor,node-modules,syncfusion,Reactjs,Meteor,Node Modules,Syncfusion,我正在使用sync Fusion的React计划来使用Meteor/React构建一个调度程序应用程序 在我的meteor应用程序的client/components文件夹中,有一个文件“schedule.js” 它有以下代码: function onEventRendered(args) { categoryColor=args.data.Teacher; console.log(args.data, ); if (!args.element || !categoryColor

我正在使用sync Fusion的React计划来使用Meteor/React构建一个调度程序应用程序

在我的meteor应用程序的client/components文件夹中,有一个文件“schedule.js”

它有以下代码:

function onEventRendered(args) {
    categoryColor=args.data.Teacher;
  console.log(args.data, );
  if (!args.element || !categoryColor) {
    return;
  }
  if (this.currentView === 'Agenda') {
    (args.element.firstChild).style.borderLeftColor = categoryColor;
  } else {
    args.element.style.backgroundColor = categoryColor;
  }
}
每当onEventRendered触发时,它会自动调用位于node_modules/ej2 schedule/src/schedule/actions/crud.js中的方法之一

Crud.prototype.addEvent = function (eventData) {
        var fields = this.parent.eventFields;
        var promise = null;
        var editParms = { addedRecords: [], changedRecords: [], deletedRecords: [] };
        var args = {
            cancel: false,
            data: (eventData instanceof Array) ? eventData : [eventData],
            requestType: 'eventCreate'
        };
        this.parent.trigger(events.actionBegin, args);
        if (args.cancel) {
            return;
        }
        if (eventData instanceof Array) {
            for (var _i = 0, _a = eventData; _i < _a.length; _i++) {
                var event_1 = _a[_i];
                this.processCrudTimezone(event_1);
                editParms.addedRecords.push(event_1);
            }
            promise =
                this.parent.dataModule.dataManager.saveChanges(editParms, fields.id, this.getTable(), this.getQuery());
        }
        else {
            this.processCrudTimezone(eventData);
            promise = this.parent.dataModule.dataManager.insert(eventData, this.getTable(), this.getQuery());
        }
        var crudArgs = { requestType: 'eventCreated', cancel: false, data: eventData, promise: promise };
        this.refreshData(crudArgs);
    };

我只想在这个方法中添加一行来调用meteor方法event.add,这样数据就可以保存在数据库中。如何实现这一点?

我们可以在应用程序级别使用MongoDB执行CRUD,而无需修改node_模块中的任何源文件。我们准备了一个样本供您参考,可以从以下位置下载。

在上面的示例中,我们在server.js中添加了CRUD操作代码片段

app.post("/GetData", (req, res) => {  //executes on initial loading and for each CRUD actions
    dbo.collection('ScheduleData').find({}).toArray((err, cus) => {
        res.send(cus);
    });
});
app.post("/BatchData", (req, res) => {
    var eventData = [];
    if (req.body.action == "insert" || (req.body.action == "batch" && req.body.added.length > 0)) {  //this block will execute while adding events
        (req.body.action == "insert") ? eventData.push(req.body.value) : eventData = req.body.added;
        for (var i = 0; i < eventData.length; i++) {
            var sdate = new Date(eventData[i].StartTime);
            var edate = new Date(eventData[i].EndTime);
            eventData[i].StartTime = (new Date(+sdate - (sdate.getTimezoneOffset() * 60000)));
            eventData[i].EndTime = (new Date(+edate - (edate.getTimezoneOffset() * 60000)));
            dbo.collection('ScheduleData').insertOne(eventData[i]); //to add the events in MongoDB collection
        }
    }
    if (req.body.action == "update" || (req.body.action == "batch" && req.body.changed.length > 0)) { //this block will execute while editing events
        (req.body.action == "update") ? eventData.push(req.body.value) : eventData = req.body.changed;
        for (var i = 0; i < eventData.length; i++) {
            delete eventData[i]._id;
            var sdate = new Date(eventData[i].StartTime);
            var edate = new Date(eventData[i].EndTime);
            eventData[i].StartTime = (new Date(+sdate - (sdate.getTimezoneOffset() * 60000)));
            eventData[i].EndTime = (new Date(+edate - (edate.getTimezoneOffset() * 60000)));
            dbo.collection('ScheduleData').updateOne({ "Id": eventData[i].Id }, eventData[i]); //to update the events in MongoDB collection
        }
    }
    if (req.body.action == "remove" || (req.body.action == "batch" && req.body.deleted.length > 0)) { //this block will execute while deleting events
        (req.body.action == "remove") ? eventData.push(req.body.value) : eventData = req.body.deleted;
        for (var i = 0; i < eventData.length; i++) {
            dbo.collection('ScheduleData').deleteOne({ "Id": eventData[i].Id }, eventData[i]); //to delete the events in MongoDB collection
        }
    }
    res.send(req.body);
});
在下面的代码中,我们给出了GetData和BatchData url路径,用于初始获取和使用UrlAdapter执行CRUD操作,并将其分配给调度程序数据源

让data=newdatamanager{url:,crudull:,adapter:newurldatapter,crossDomain:true}

eventSettings={{dataSource:data}

运行示例的步骤:

运行MongoDB并在“mydb”数据库中创建名为“ScheduleData”的集合。 运行下面的注释

npm安装

npm运行服务器 npm启动
这不是一个好主意,您的node_模块包是一个项目的特定版本,它将随着时间的推移保持进一步的更改和改进,它旨在为特定目的公开一个API,并且上述方法旨在独立于您的实现来完成其自己的工作。如果您更改节点模块,它将被运行npm或安装/添加/更新触发的任何包重建所覆盖。。等等。您不想通过修改将自定义逻辑绑定到包,而是在React组件生命周期中最适合的地方编写逻辑。@DimitarNikovski您知道如何扩展“Crud.prototype.addEvent=function eventData”吗