首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止视图在Ember.js中被销毁

如何防止视图在Ember.js中被销毁
EN

Stack Overflow用户
提问于 2014-09-11 12:52:53
回答 2查看 586关注 0票数 3

快速说明:

我不相信这是Ember.js: Prevent destroying of views的翻版。我发现的其他相关问题都过时了。

如果这在以后过时,我将使用Ember 1.7.0和车把1.3.0。

问题的上下文:

正如标题所述,我想知道如何在不破坏视图的情况下在视图之间进行转换。使用queryParams并不能解决我的问题。

我正在创建一个具有以下嵌套视图的计算器:

代码语言:javascript
复制
>>Calculator View
    >>Report View (hasMany relationship to Calculator)
      --School Partial (I am using queryParams here)

我能够在Report视图之间导航,而不破坏School部分,因为我使用queryParams并使用displaySchoolPartial布尔值来显示/隐藏该部分。例子如下:

报告模板(仅显示基本部分):

代码语言:javascript
复制
<script type="text/x-handlebars" data-template-name="calculator/report">
    ...
    {{#link-to "calculator.report" (query-parameters displaySchoolPartial="true")}}
    {{render "_school"}}
</script>

学校模板(也被删除):

代码语言:javascript
复制
<script type="text/x-handlebars" data-template-name="_school">
    {{#with controllers.calculatorReport}}
    <div {{bind-attr class=":schoolPartialWrapper displaySchoolPartial::hide-element"}}>
        ...
    </div>
    {{/with}}
</script>

这如预期的那样起作用。如前所述,在不同的Report视图和School部分之间导航不会破坏视图。

问题:

当导航到Calculator视图时,Report视图就会被销毁,这会破坏我的School视图。我不希望也使用queryParams来替换我的Report视图。

我需要确保视图不被破坏的原因是因为我在School的部分中有一个包含3,000所学校的选择框。重新渲染这个花了很长时间。简单地显示/隐藏Report视图将是一个更好的UX。

EN

回答 2

Stack Overflow用户

发布于 2014-09-12 08:02:49

别跟安博吵架。你会输的。

视图在需要时被实例化和呈现,在完成时被撕毁。

为什么你有一个3000元素的下拉列表呢?

如果您真的非常想这样做,我建议您在应用程序页面上放置一个{{render}},并将其隐藏起来。只要应用程序还活着,这个视图就会在应用程序出现并保持不变时被创建和呈现。然后,在视图的didInsertElement中,执行该隐藏元素的cloneNode,并将其插入视图的某个DOM中。您可能不得不费尽心思让事件处理程序正确连接起来。

票数 2
EN

Stack Overflow用户

发布于 2014-09-12 07:30:08

我的建议不是使用“呈现”,而是使用“部分”,因此您只需要删除所需的模板。拥有一个通过css类设置显示/隐藏的控制变量。用你的控制器控制那个变量。

使用“部分”将允许您有独立于报告的学校模板,从而删除报告不会影响学校。

只需确保您正确地定义出口和部分。

希望能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25787964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档