0

我正在编写一个简单的Backbone.js代码,它基于从JSON提取的配置创建练习。在视图中创建新集合 - Backbone.js

的流程现在是:

  1. 一些种类在我的代码获取JSON文件(jQuery的)控制器。
  2. 我创建了描述模型(基于我的JSON文件的一部分),以及通过迭代JSON文件中'answers'数组中的所有项目并将它们添加到集合中的答案集合。
  3. 我创建视图,基于模型&集合。

所有这一切都说明,并在this topic

这是我的JSON文件的一部分,这是一个锻炼的配置解决。

"config": { 
    "id": "myWomiExercise1", 
    "type": "", 
    "numberOfSets": 0, 
    "numberOfPresentedAnswers": 3, 
    "numberOfCorrectAnswerInSet": 1, 
    "randomAnswers": true, 
    "exerciseTrueFalseType": false 
}, 

这意味着,我可以具有例如在我的JSON 30分的答案,并有将被随机选择的(通过使用下划线的方法,有可能),以示3(其中一个是正确的)。

我通过配置新的景观,并有机会获得它通过向视图

initialize: function(options) { 
    this.options = options || {}; 
} 

而且比,我需要创造,为我的配置说(“randomAnswers”:真)组新答案。 正如谷歌说,我可能需要创建一个新的集合使用下划线方法,通过组合其中几个 - 因为我需要的是,集创建将有x答案介绍,其中将是正确的,和xy不正确,并且finnaly,随机。 由于链接不适用于'where',我想知道做这件事的最好方法是什么?我的想法,这看起来很可怜​​的看法是有这样的:

randomAnswerSet: function(config) { 
    var correct = config.numberOfCorrectAnswerInSet; 
    var wrong = config.numberOfPresentedAnswers - correct; 
    var set = []; 
    set.push(
     _.sample(this.collection.getCorrect(), correct) 
    ); 
    set.push(
     _.sample(this.collection.getWrong(), wrong) 
    ); 

    this.collection = new AnswersCollection(_.shuffle(_.flatten(set))); 
}, 

而另一个问题,我应该创建一个新的集合,这样randomAnswerSet中查看和比正常渲染这一观点?或者有更好的方法来做到这一点?因为我需要一个控制按钮'新的示例',它将重新创建集合(因为所有东西都是随机的,它应该提供全新的集合),但是我需要销毁旧集合吗?当用户点击一次按钮10次会有很多收集,这是最佳的吗?

感谢大家,祝你有美好的一天!

回答

1

首先,你明白,如果用户点击“新的例子”,他会立即知道正确的答案,对吧?这将是唯一一个被显示两次...

至于如何实现它,我会定义一个新的集合类型,其中包含所有的答案,并返回一个方法的集合。您可以在此处看到类似的实现:https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/entities/common.js(请参阅FilteredCollection),它用于https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/list/list_controller.js

它在应用程序中使用的方式是过滤的集合保存对原始联系人集合的引用(所有数据),并在被过滤时返回一个新的集合。在你的情况下,你只需要有一个randomAnswerSet函数返回一组答案,而不是上述文件中的filter方法。

希望这会有所帮助!

+0

关于正确答案的第一部分 - 为什么? – user1854236

+0

用户看到第一组可能的答案:AXB(其中X是正确的答案)。他点击以获得一个新的例子,并看到XCD。由于每次显示X并且只能有一个正确的答案,他知道X是答案。 –

+0

Yeap,但可以有多个正确的答案,因为getCorrect()返回的数组中的所有答案'正确'在集合中是真实的,我是对不对?:) 顺便说一句,感谢您的回答,我会测试这在第二个:) – user1854236