问题在于(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
操作中,“if if”未按预期打印出来,但#each
尝试使用未预期的未定义数组。
我不能保证存在pros
数组,这就是为什么我使用{{#if pros}}
不使用它,但似乎它不起作用。
console.log(arr)
以查看是否实际调用了过滤器,它是。
此外,当我尝试从过滤器返回[]
时,它仍会调用set_class
,这是意料之外的,因为没有任何内容可以迭代。
有没有办法克服这些意想不到的问题?
谢谢!