ember''标签导致元素消失

时间:2014-05-20 06:49:42

标签: ember.js handlebars.js

我有一个视图模板'person'定义为:

....
{{input type="checkbox" checked=isEditing}}
<table><tbody>
    {{#if 'isEditing'}}
        <tr><td><strong>Id</strong></td>{{id}}</td></tr>
        <tr><td><strong>number</strong></td><td>{{repNumber}}</td></tr>
        <tr><td><strong>First Name</strong></td><td>{{firstName}}</td></tr>
        <tr><td><strong>Middle Name</strong></td><td>{{middleName}}</td></tr>
        <tr><td><strong>Last Name</strong></td><td>{{lastName}}</td></tr>
        <tr><td><strong>alias 1</strong></td><td>{{alias1}}</td></tr>
        <tr><td><strong>alias 2</strong></td><td>{{alias2}}</td></tr>
    {{else}}
        <tr><td><strong>Id</strong></td>{{id}}</td></tr>
        <tr><td><strong>number</strong></td><td>{{repNumber}}</td></tr>
        <tr><td><strong>First Name</strong></td><td>{{input type="text" value=firstName</td></tr>
        <!-- input counterparts etc -->
    {{/if}}
</tbody></table>
....

PersonController定义如下:

App.Editable = Em.Mixin.create({
    isEditing: false,
    actions: {
        edit: function() {
            this.toggleProperty('isEditing');
        }
    }
});

App.PersonController = Em.ObjectController.extend(SS7.Editable);

路线的定义如下:

App.Router.map(function(){
    ...
    this.resource('person', { path: '/person/:person_id'}, function(){});
});

现在,每当我第一次使用复选框切换isEditing值时,我的所有元素都会突然从屏幕上消失。灰烬检查器显示viewTree当前位于具有PersonController的人员路径上,并且模型包含正确的人。但是在我硬刷新页面之前,我现在再也看不到两个输出中的任何一个(tr,tds)。

任何人都可以帮助解释这种行为。我不确定这是怎么回事。

1 个答案:

答案 0 :(得分:1)

好的,这些类型的问题很难找到,问题是你错过了一个&lt; td&gt;这会使你的代码失败,好吧,不会失败,因为它不会抛出任何错误,但是在构建HTML时失败,错误就在这部分:

{{#if isEditing}}
    <tr><td><strong>Id</strong></td>{{id}}</td></tr>
    <tr><td><strong>number</strong></td><td>{{repNumber}}</td></tr>
    <tr><td><strong>First Name</strong></td><td>{{firstName}}</td></tr>
    <tr><td><strong>Middle Name</strong></td><td>{{middleName}}</td></tr>
    <tr><td><strong>Last Name</strong></td><td>{{lastName}}</td></tr>
    <tr><td><strong>alias 1</strong></td><td>{{alias1}}</td></tr>
    <tr><td><strong>alias 2</strong></td><td>{{alias2}}</td></tr>
{{else}}

检查第一个&lt; tr&gt;,你错过了&lt; td&gt;在{{id}}之前,它应该是这样的:

{{#if isEditing}}
    <tr><td><strong>Id</strong></td><td>{{id}}</td></tr>
    <tr><td><strong>number</strong></td><td>{{repNumber}}</td></tr>
    <tr><td><strong>First Name</strong></td><td>{{firstName}}</td></tr>
    <tr><td><strong>Middle Name</strong></td><td>{{middleName}}</td></tr>
    <tr><td><strong>Last Name</strong></td><td>{{lastName}}</td></tr>
    <tr><td><strong>alias 1</strong></td><td>{{alias1}}</td></tr>
    <tr><td><strong>alias 2</strong></td><td>{{alias2}}</td></tr>
{{else}}