自定义元素问题:view元素

时间:2015-11-12 15:13:01

标签: javascript aurelia

我在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而遇到任何问题。

1 个答案:

答案 0 :(得分:0)

今晚由this pull request解决了这个问题。运行jspm update并确认您已安装github:aurelia/templating-resources@0.17.3

问题是if模板控制器在隐藏隐藏后重新附加到DOM时没有重新绑定视图。