#if语句抛出TypeError:节点未定义

时间:2013-05-13 00:14:59

标签: if-statement ember.js firebug handlebars.js client-side-scripting

请考虑为Ember.js编写的Handlebar中的以下片段:

<script type="text/x-handlebars" id="courses/selectedCourse">
    <div id="selectedCourse">

    {{#if IsRegistered}}
        <div class="XX">
            Registered for the course
        </div>
        {{else}}
            <div class="YY">
                <button {{action registerForCourse}}>Register</button>
            </div>
     {{/if}}

        <h1>{{courseTitle}}</h1>            
        <div class="selectedCourseItem">            
            <img id="selectedCourse" {{bindAttr src="imageUrl"}}/>
        </div>

    </div>
</script>

问题1:注册课程后,内容不会立即刷新。

问题2:在多次更改所选课程时,内容会显示两次并重叠。

以下是我在FireBug中看到的消息:

  

TypeError:节点未定义

     

[打破此错误]

     

node.unchain(key,path);

如果我删除了#if语句,一切正常。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

我有一个类似的问题并通过在if语句小写

中创建参数的第一个字母来修复它
{{#if isRegistered}}

答案 1 :(得分:0)

Ember根据惯例做出假设,即大写的属性名称表示全局范围。您可以选择将变量名称修改为小写,或者限定引用。例如,如果属性在您的模型上,则可以使用

{{#if model.isRegistered}}

以避免此错误。