Javascript 尝试从Jasmine访问主干模型时发生ReferenceError?
我认为这只是一个JavaScript范围的问题 我试图向主干应用程序添加一些Jasmine测试,但我不知道如何从Jasmine设置中访问主干模型 这是我当前的应用程序结构(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
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...
}
})();
请您使用安装和拆卸进行测试,您需要修复此
待办事项(“获取牛奶”,“星期二”)
toTodo({“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...
}
})();