"Failed to compute" 错误,因为 #if 中的意外操作
"Failed to compute" error because of unexpected operation inside #if
这里是问题 (Ractive.js v0.7.3): http://jsfiddle.net/Inversion/hLym2xcy/
r = new Ractive
el: 'cont'
template: '''
{{#task.options}}
{{#if pros}}
inside if
{{#each filter(.pros)}}<li class='{{set_class(.)}}'>+{{.v}}</li>{{/each}}
{{/if}}
{{/task.options}}
'''
data:
task:
options: [{pros:[{v:1}]}]
set_class: (o)-> o.v
filter: (arr)-> console.log(arr);arr || []
setTimeout(
-> r.set('task.options.0.pros', undefined)
2000
)
在 r.set
操作中 "inside if" 未按预期打印出来,但 #each
尝试使用未定义的数组,这不是预期的。
我不能保证 pros
数组的存在,这就是为什么我使用 {{#if pros}}
不使用它,但似乎它不起作用。
添加console.log(arr)
是为了看filter是否真的被调用了,确实是。
此外,当我尝试从过滤器 return []
时,它仍然调用 set_class
这是意外的,因为没有什么可以迭代。
有没有办法克服这些意想不到的问题?
谢谢!
似乎是 known problem 并将在 v0.8
中修复
这里是问题 (Ractive.js v0.7.3): http://jsfiddle.net/Inversion/hLym2xcy/
r = new Ractive
el: 'cont'
template: '''
{{#task.options}}
{{#if pros}}
inside if
{{#each filter(.pros)}}<li class='{{set_class(.)}}'>+{{.v}}</li>{{/each}}
{{/if}}
{{/task.options}}
'''
data:
task:
options: [{pros:[{v:1}]}]
set_class: (o)-> o.v
filter: (arr)-> console.log(arr);arr || []
setTimeout(
-> r.set('task.options.0.pros', undefined)
2000
)
在 r.set
操作中 "inside if" 未按预期打印出来,但 #each
尝试使用未定义的数组,这不是预期的。
我不能保证 pros
数组的存在,这就是为什么我使用 {{#if pros}}
不使用它,但似乎它不起作用。
console.log(arr)
是为了看filter是否真的被调用了,确实是。
此外,当我尝试从过滤器 return []
时,它仍然调用 set_class
这是意外的,因为没有什么可以迭代。
有没有办法克服这些意想不到的问题?
谢谢!
似乎是 known problem 并将在 v0.8
中修复