open: function(demoName) { var sample = samples[demoName]; if (lastDemo!=demoName) { if (lastDemo && samples[lastDemo].flipbook) { samples[lastDemo].flipbook.turn('destroy').remove(); samples[lastDemo].flipbook = null; } lastDemo = demoName; } if (sample.loading==status.unloaded || sample.loading==status.loading) { $('.shelf .sample[sample="'+demoName+'"]'). addClass('loading'). html('<div class="loader"><i></i></div>'); } if (sample.callback) { if (currentDemo==demoName) return; currentDemo = demoName; sample.callback(); } else { if (sample.loading==status.loading) { setTimeout(function(){ bookshelf.open(demoName); }, 100); return; } sample.loading = status.loading; yepnope({ load: [ sample.path+'css/'+demoName+'.css?'+sid, sample.path+'js/'+demoName+'.js?'+sid ] }); bookshelf.open(demoName); } },
时间: 2024-02-10 21:27:54 浏览: 129
应用程序单例实现Demo
这段代码是一个方法 `open` 的实现。具体解释如下:
```javascript
open: function(demoName) {
var sample = samples[demoName];
if (lastDemo != demoName) {
if (lastDemo && samples[lastDemo].flipbook) {
samples[lastDemo].flipbook.turn('destroy').remove();
samples[lastDemo].flipbook = null;
}
lastDemo = demoName;
}
if (sample.loading == status.unloaded || sample.loading == status.loading) {
$('.shelf .sample[sample="' + demoName + '"]')
.addClass('loading')
.html('<div class="loader"><i></i></div>');
}
if (sample.callback) {
if (currentDemo == demoName)
return;
currentDemo = demoName;
sample.callback();
} else {
if (sample.loading == status.loading) {
setTimeout(function() {
bookshelf.open(demoName);
}, 100);
return;
}
sample.loading = status.loading;
yepnope({
load: [
sample.path + 'css/' + demoName + '.css?' + sid,
sample.path + 'js/' + demoName + '.js?' + sid
]
});
bookshelf.open(demoName);
}
},
```
具体解释如下:
- `var sample = samples[demoName];` 根据传入的 `demoName` 获取对应的示例对象,并将其赋值给变量 `sample`。
- 判断是否需要切换示例:
- 如果上一个示例 `lastDemo` 不为空且该示例的翻页组件存在,则销毁并移除该示例的翻页组件。
- 将当前示例 `demoName` 赋值给 `lastDemo`。
- 如果示例的加载状态为未加载或正在加载:
- 给对应的示例元素添加 `loading` 类,显示加载中的样式。
- 在示例元素中插入一个加载动画。
- 如果示例有回调函数:
- 如果当前示例已经是要打开的示例,则直接返回。
- 将 `currentDemo` 设置为当前示例。
- 执行示例的回调函数。
- 否则:
- 如果示例的加载状态为正在加载,稍后再尝试打开示例。
- 将示例的加载状态设置为正在加载。
- 使用 `yepnope` 加载示例的 CSS 文件和 JavaScript 文件。
- 打开示例。
总体而言,这段代码的作用是根据传入的示例名称打开对应的示例。它会根据示例的加载状态、是否需要切换示例和是否有回调函数等条件来执行相应的操作,包括显示加载中的样式、加载示例的资源文件和执行示例的回调函数。
阅读全文