gpt4 book ai didi

javascript - 使用 Hem : "Cannot read property ' length' of undefined"的 Spine JS 错误渲染 .eco 模板

转载 作者:行者123 更新时间:2023-11-30 07:44:42 26 4
gpt4 key购买 nike

学习 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')()

期望一个散列对象作为参数。所以,如果你想在你的 View 中使用一个 @list 变量(我指的是 Rails),你必须执行如下操作:

@html require('views/UserApp')(list: @list)

其中键将是 View 中变量的名称。所以使用:

@html require('views/UserApp')(@list)

就像你正在做的那样,会将 @list 变量作为当前的 @this 引入 View ,在你的 View 中你应该能够以下列方式使用它:

<% if @.length: %>
<% for i in @: %>
<%= i %>
<% end %>
<% else: %>
Why you no work!?
<% end %>

但它的可读性不强。

关于javascript - 使用 Hem : "Cannot read property ' length' of undefined"的 Spine JS 错误渲染 .eco 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9054945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com