Javascript 尝试从Jasmine访问主干模型时发生ReferenceError?

Javascript 尝试从Jasmine访问主干模型时发生ReferenceError?,javascript,backbone.js,jasmine,Javascript,Backbone.js,Jasmine,我认为这只是一个JavaScript范围的问题 我试图向主干应用程序添加一些Jasmine测试,但我不知道如何从Jasmine设置中访问主干模型 这是我当前的应用程序结构(main.js是我的主干应用程序): main.js的内容是这样的,并且在index.html中运行正常: $(function(){ var Todo = Backbone.Model.extend({ defaults: function() { return {}; }, ... et

我认为这只是一个JavaScript范围的问题

我试图向主干应用程序添加一些Jasmine测试,但我不知道如何从Jasmine设置中访问主干模型

这是我当前的应用程序结构(
main.js
是我的主干应用程序):

main.js
的内容是这样的,并且在
index.html
中运行正常:

$(function(){
  var Todo = Backbone.Model.extend({
    defaults: function() {
      return {};
    }, 
 ... etc
SpecRunner.html中的文件如下所示:

  <!-- include source files here... -->
  <script src="/js/vendor/jquery-1.10.2.min.js"></script>
  <script src="/js/vendor/underscore.js"></script>
  <script src="/js/vendor/backbone.js"></script>
  <script src="/js/main.js"></script>

  <!-- include spec files here... -->
  <script type="text/javascript" src="spec/testSpec.js"></script>
我怎样才能掌握Todo范围?我尝试了
window.Todo
,但也没用

正如我们在会议上看到的那样

构造函数/初始化
新模型([属性],[选项])
创建模型实例时,可以传入 将在模型上设置的属性

构造函数需要使用对象文本(键值对)初始化,如下所示:

new Book({
    title: "One Thousand and One Nights",
    author: "Scheherazade"
});
因此,您需要将代码更改为:

var todo = new Todo({   
                 task: "Get the milk",
                 dayOfWeek: "Tuesday"
           });
更新:

在这里,您在jquery函数范围内声明了Todo,并尝试从外部访问

$(function(){
    var Todo = Backbone.Model.extend({
        defaults: function() {
          return {};
        },
        etc...
    } 
}
您有两个选项,将Todo声明为全局,不推荐,但主要用于主干示例:

$(function(){
    window.Todo = Backbone.Model.extend({
        defaults: function() {
          return {};
        },
        etc...
    } 
});
您还可以尝试在声明后调用jquery函数:

$(function(){
    var Todo = Backbone.Model.extend({
        defaults: function() {
          return {};
        },
        etc...
    } 
})();

请您使用安装和拆卸进行测试,您需要修复此
待办事项(“获取牛奶”,“星期二”)
to
Todo({“task”:“获取牛奶”、“日期”:“星期二”);
note,仍然
ReferenceError:Todo没有定义
。我想你是对的,对象应该这样构造,但目前的问题是Jasmine根本看不到任何
Todo
。让我知道这是否有用。
$(function(){
    window.Todo = Backbone.Model.extend({
        defaults: function() {
          return {};
        },
        etc...
    } 
});
$(function(){
    var Todo = Backbone.Model.extend({
        defaults: function() {
          return {};
        },
        etc...
    } 
})();