gpt4 book ai didi

javascript - Backbone localStorage 没有使用良好的同步方法

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:14 24 4
gpt4 key购买 nike

我快被我的问题搞疯了!

我有一个模型,我想在其中使用 localStorage,但是当我在 View 中调用 model.fetch 时,出现错误“错误:必须指定“url”属性或函数”。

如果我没有使用 localStorage,此错误是“正常”的,因为我没有定义 url 属性。这里的 fetch 调用应该使用 Backbone.sync (又名 Backbone.localSync 被 localStorage 模块覆盖,对吧?)。

但它永远不会进入 localStorage 函数!就好像该模块从未加载过一样。但我在各处添加了一些console.log,并且backbone.localstorage已加载并正确初始化。

就像 Backbone 在某处重新加载一样,我失去了指向 localStorage.localSync 的 Backbone.sync 覆盖...

modules/config.js 的渲染函数发生错误。

这是我的代码:

模型/configuration.js':

var Backbone = require('Backbone');
Backbone.LocalStorage = require('Backbone.LocalStorage');

// Exports the module
module.exports = Backbone.Model.extend({
defaults:{
id: 1
agencyName : 'xxx',
agencyId : 'xxx',
serviceUrl : 'xxx'
},

localStorage: new Backbone.LocalStorage('Configuration')
});

数据/配置.js:

'use strict';

// Get class dependencies
var Config = require('../models/configuration');

// export module
module.exports = new Config();

Controller /config.js:

'use strict';

// Gets the controller dependencies
var region = require('../regions/main'),
dispatcher = require('../services/dispatcher'),
ConfigView = require('../modules/config'),
config = require('../data/configuration');

// manages the route for the home page
module.exports = function() {
dispatcher.command('header:set', [ 'Configuration', false, true]);
region.show(new ConfigView({model: config}));
};

模块/config.js:

'use strict';

// Adds the requires for the module
var Backbone = require('Backbone');

// Exports the header module
module.exports = Backbone.View.extend({

// Sets the template
tpl: require('../templates/config.tpl'),

// Sets the class for the Module
className: 'home module',

// Sets the event for the menu module
events: {
'mouseup': 'onScreenTap'
},

// Fired when the user clicks anywhere in the menu, to close it
onScreenTap: function(e) {
e.preventDefault();

// if a menu item was clicked, it navigates to the module
var node = e.target;
if (node.classList.contains('btn')) {
this.model.save();
}
},

// Initializes the module
initialize: function () {
},

// Renders the view
render: function () {
this.model.fetch();

this.$el.html(this.tpl({ config: this.model }));
return this;
}
});

最佳答案

好的,我发现问题了!我在任何地方都使用“require(”Backbone”)”,但在backbone.localStorage.js中,“require(”backbone”)”需要主干!所以缓存了 2 个 Backbone 实例,而我没有使用好的实例。3 天的战斗让我筋疲力尽!

希望有一天这会对某人有所帮助..

关于javascript - Backbone localStorage 没有使用良好的同步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35483063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com