2014-10-09 85 views
1

我的手柄模板(在Ember应用程序中)有一个简单的if/else语句,但由于某些原因,if和else分支都呈现。Handlebars if/else渲染两个分支

下面是一段代码:

{{#if loading}} 
    <p>Loading</p> 
{{else}} 
    {{#if loaded}} 
     loaded 
     <p><button {{action "play" this}}>Play</button><p> 
    {{else}} 
     not loaded 
     <p><button {{action "load" this}}>Load</button><p> 
    {{/if}} 
{{/if}} 

最初,只有else分支呈现,但是当我加载声音,并将其loaded键设置为true,无论是ifelse分支渲染。

这是改变声音的loaded属性的方法:

load: function() { 
    var media = new window.Media(this.get("normalizedPath"), this._finishedPlaying.bind(this), this._finishedPlaying.bind(this)), 
     loadPromise; 

    this.set("media", media); 
    this.set("loading", true); 

    if(media.load) { 
     loadPromise = media.load(); 
    } 
    else { 
     loadPromise = RSVP.resolve(this); 
    } 

    return loadPromise.then(function() { 
     this.set("loading", false); 
     this.set("loaded", true); 
     return this; 
    }.bind(this)); 
}, 

任何帮助将不胜感激。

+0

你可能想要提供处理加载状态的代码:) – MartinElvar 2014-10-09 16:42:10

+0

@MartinElvar我不明白为什么这是必要的。有什么我可以做的'装载'属性会导致句柄呈现两个分支?无论如何,我会添加代码。 – SimpleJ 2014-10-09 16:45:12

回答

3

你在这里有坏的html,你错过了结束p标签,而是有开放的p标签。

+0

谢谢。这是问题。我会尽我所能接受答案。 – SimpleJ 2014-10-09 16:49:12