我正在尝试在蝙蝠侠中建立多态关联,如记录here。我正在使用LocalStorage并继续收到以下消息:
Related model undefined for polymorphic association not found.
我的模型如下:
class App1.Model extends Batman.Model
@persist Batman.LocalStorage
class App1.Superpower extends App1.Model
@resourceName: 'superpower'
@encode 'id', 'name'
@belongsTo 'superpowerable', polymorphic: true
class App1.Hero extends App1.Model
@resourceName: 'hero'
@encode 'id', 'name'
@hasMany 'superpowers', as: 'superpowerable', polymorphic: true
class App1.Villain extends App1.Model
@resourceName: 'villain'
@encode 'id', 'name'
@hasMany 'superpowers', as: 'superpowerable', polymorphic: true
以及我用来实例化所有代码的代码:
superman = new App1.Hero(name: "Superman")
superman.save()
super_strength = new App1.Superpower(name: "Super Strength")
super_strength.save() # -> gives "Related model undefined for polymorphic association not found."
invincibility = new App1.Superpower(name: "Invincibility")
invincibility.save() # -> gives "Related model undefined for polymorphic association not found."
superman.get('superpowers').add super_strength
superman.get('superpowers').add invincibility
superman.save()
super_strength.save()
invincibility.save()
console.log superman.toJSON()
console.log super_strength.toJSON()
console.log invincibility.toJSON()
根据this question它取决于命名空间,但它们在我的代码中都是一样的,所以我真的想知道这里出了什么问题。
提前致谢
答案 0 :(得分:2)
哦,哦......我写了那个例子,如果它不起作用,我应该责怪:)
可以肯定的是,您是否在该脚本的开头调用了App1.run()
?上周我ran into that issue while testing - 要打{{1}}来加载关联!
修改强>
哦,看起来就像使用API一样恰到好处。您必须明确相关模型的run
和#{label}_type
。 Batman.js会很好地加载JSON中的关联,但是在初始化新记录时你必须指定它们,例如:
#{label}_id
我在它工作的地方设置了一个JSFiddle:http://jsfiddle.net/2atLZ/2/
我将回到文档并添加一个关于此的说明!从长远来看,如果API刚接受super_strength = new App1.Superpower
name: "Super Strength"
superpowerable_id: superman.get('id'),
superpowerable_type: 'Hero'
然后提取#{label}
和#{label}_id
,那就太棒了......但是现在,情况并非如此。!