我在Aurelia中有一个自定义元素,它使用了一个jQuery插件(KendoUI)。此自定义元素正在使用if.bind
属性的视图中使用。
自定义元素使用内联模板,如下所示:
@inlineView('<template><input type="text" ref="proxy" class.bind="class"></template>')
由于jQuery插件的性质,我必须传递一个元素来初始化。我使用我在模板中定义的引用,如下所示:
$(this.proxy).doJQueryStuff(...)
分离元素,然后重新附加元素后,ref元素(我的viewmodel中的this.proxy
)为空。
我最初认为问题在于,由于jQuery会改变DOM,它也会改变视图模板。我认为在元素分离之后(并通过jQuery调用销毁以删除所有KendoUI元数据),输入引用不再可用,导致重新附加时出错,因为Aurelia正在缓存视图。然而,这种情况并非如此。已经确认Aurelia不会缓存视图,除非您明确告诉它这样做,并且在this simplified plunk中,行为是预期的。
为什么在我的viewmodel中对我的ref元素的引用在附加和分离元素后为null?
值得注意的是,自定义元素是此构造中的页面视图的一部分:
<div id="application" class="au-animate" if.bind="isLoggedIn">
<nav-bar router.bind="router"></nav-bar>
<div class="page-host">
<router-view></router-view>
</div>
</div>
我不知道是否有人因router-view
绑定中的if
而遇到任何问题。
答案 0 :(得分:0)
今晚由this pull request解决了这个问题。运行jspm update
并确认您已安装github:aurelia/templating-resources@0.17.3
。
问题是if
模板控制器在隐藏隐藏后重新附加到DOM时没有重新绑定视图。