Spine JS错误渲染.使用Hem的eco模板:“;无法读取属性'长度'“未定义”;
Spine JS error rendering .eco template using Hem : "Cannot read property 'length' of undefined"
Learning spine.js我完成了两个教程,没有问题,看起来是一个很棒的框架,但这个简单的小问题让我抓狂,因为我不知道我能做些什么来修复它…
据我所知,.eco模板(由hem编译)应该可以访问变量@list,但事实并非如此,其他人遇到过这种情况吗?
有人能告诉我哪里出了问题吗?
用户.咖啡
Spine = require('spine')
User = require('models/user')
$ = Spine.$
class Show extends Spine.Controller
className: 'UserApp'
events:
'click .NewUser' : 'new'
constructor: ->
super
User.bind('create refresh change', @render)
@active @render
render: =>
#get all users and render list
@list= [1,2,3,4,5]
console.log(@list)
@html require('views/UserApp')(@list)
new: ->
@navigate('/users','create')
UserApp.eco
<% if @list.length: %>
<% for i in @list: %>
<%= i %>
<% end %>
<% else: %>
Why you no work!?
<% end %>
@html require('views/UserApp')()
需要一个散列对象作为参数。因此,如果你想在你的视图中使用@list
变量(我的意思是alaRails),你必须做如下操作:
@html require('views/UserApp')(list: @list)
其中键将是视图中变量的名称。因此使用:
@html require('views/UserApp')(@list)
就像您所做的那样,会将@list
变量作为当前的@
或this
显示在视图中,在您的视图中,您应该能够以以下方式使用它:
<% if @.length: %>
<% for i in @: %>
<%= i %>
<% end %>
<% else: %>
Why you no work!?
<% end %>
但它不是那么可读。
我认为模板期望接收一个对象。然后使用@key_name
访问该对象的属性;
试试这样的东西(免责声明:我不知道Coffeescapet)
render: =>
#get all users and render list
@item = {}
@item.list = [1,2,3,4,5]
@html require('views/UserApp')(@item)
相关文章:
- TypeError:无法读取属性'推'未定义的JavaScript
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 未捕获的类型错误:无法读取属性'删除'的未定义
- AngularJS指令出错-无法读取属性'编译'的未定义
- 看到“;未捕获的类型错误:无法读取属性'weight'未定义的“;尽管按照字面上的指示
- angularjs无法读取未定义的属性then
- 无法读取属性'材料'未定义的Three.js
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- JavaScript承诺-无法读取属性'那么'的未定义
- 未捕获的类型错误:无法读取属性'中止'的未定义
- 角度推入数组给出:TypeError:无法读取属性'推'的未定义
- Javascript未捕获类型错误:无法读取属性'0'的未定义
- jQuery控制台错误:无法读取属性'top'的未定义
- TypeError:无法读取属性'findAll'的未定义
- 无法读取属性'errcap'未定义的jqgrid
- 无法读取未定义的属性“rid”
- 未捕获的类型错误: 无法读取未定义的属性“图像”
- 可以't读取'getHTML'未定义的Liferay CK Editor内容
- 在node.js中未定义读取属性错误