首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >HTMLBars渲染测试

HTMLBars渲染测试
EN

Stack Overflow用户
提问于 2016-05-06 13:17:34
回答 1查看 43关注 0票数 0

目前我正在构建一个ember.js组件,它有2种模式,显示和编辑。当组件处于显示模式时,它以内联方式呈现模板字符串,该字符串是关联模型的属性。在编辑模式下,组件在可编辑的内容中显示模板字符串。我必须让组件在模式切换时重新初始化,方法是将组件的两个实例放在一个模板if/else语句中。我的组件中的以下代码实现了这一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
`import layoutDefault from '../templates/components/positionable-element-default'` 

.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  layout:Em.computed(->
    if @.get('layoutComponent.displayMode') 
      Ember.HTMLBars.compile(@.get('regionModel.textContent')) 
    else
      layoutDefault
  )

我的想法是解决render无法剥离模板字符串的{和}字符,然后在警告用户错误后重新编译。

我试着把编译函数放在一个try catch中,但是没有捕获到任何东西,大概是因为问题不在于编译,而在于渲染。

在一些研究中,我发现了Why Ember.onerror() not capturing the Assertion Failed error.?,但看起来我永远都无法捕捉到生产中的断言错误。因此,我的问题是:是否可以确定模板字符串是否可以正确呈现?或者这类功能超出了ember的能力范围?非常感谢的指针:)

EN

回答 1

Stack Overflow用户

发布于 2016-05-07 11:46:45

我想你也许可以通过使用组件助手来动态显示组件来解决你的问题,看看这个post,了解它是如何工作的等等。

以下是我建议您尝试使用组件帮助器解决问题的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// components/toggling-component.js
export default Ember.Component.extend({
  mode: 'display',
  modeComponent: Ember.computed('mode', function(){
    return this.get('mode') + '-mode'
  }),
  actions: {
    setMode(mode){
        this.set('mode', mode) 
    }
  }
})

// templates/components/toggling-component.hbs
Current Mode: {{mode}}<br/>
<button {{action 'setMode' 'display'}}>Toggle Display</button>|
<button {{action 'setMode' 'edit'}}>Toggle Edit</button> 
<hr/>
{{component modeComponent text=model.textContent}}

现在,通过切换mode属性,您可以加载您想要的任何模式,其中一个模式将对应于以下两个组件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// templates/components/display-mode.hbs
Display Mode Component: <br/>
{{text}}

// templates/components/edit-mode.hbs
Edit Mode Component: <br/>
{{textarea value=text cols="80" rows="6"}}

这是一个演示完整解决方案的twiddle

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

https://stackoverflow.com/questions/37073462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文