Javascript 我希望我的Ember.js条件在切换布尔值时加载不同的模板

Javascript 我希望我的Ember.js条件在切换布尔值时加载不同的模板,javascript,html,view,ember.js,Javascript,Html,View,Ember.js,javascript似乎被调用,因为我看到正在触发console.log,但没有显示实际的HTML 通常我会将其作为一个动作放在控制器中,但由于我希望在页面本身加载时加载javascript,所以我使用willInsertElement将其注入视图中 VpcYeoman.DocView = Ember.View.extend({ toggleLetterSwitch: false, togglePermitSwitch: false, templateName: 'doc',

javascript似乎被调用,因为我看到正在触发console.log,但没有显示实际的HTML

通常我会将其作为一个动作放在控制器中,但由于我希望在页面本身加载时加载javascript,所以我使用willInsertElement将其注入视图中

VpcYeoman.DocView = Ember.View.extend({ 
  toggleLetterSwitch: false,
  togglePermitSwitch: false,  
  templateName: 'doc',
  willInsertElement: function() {
      var docTemplateID = this.get('docTemplateID');
      if ( docTemplateID == 2) {
        this.set('toggleLetterSwitch', true);
        this.set('togglePermitSwitch', false);
        console.log('docTemplateID equals 2');
      } else {
        this.set('toggleLetterSwitch', false);
        this.set('togglePermitSwitch', true);
        console.log(this.get('toggleLetterSwitch'));
        console.log('docTemplateID else 1');
      }
  }
});
--哈佛商学院博士--

{{{#if toggletterswitch}
显示信件模板
{{/if}
{{{#如果切换PermitSwitch}
显示许可证模板
{{/if}

即使找不到DoctTemplateId,函数仍应切换默认模板。

当然,您应该更改ifs,如下所示:

{{#if view.toggleLetterSwitch}}

问题是,toggleLetterSwitch存在于您的视图中,而不存在于控制器或模型中。

当代码计算ifs时,它尝试在控制器和模型中查找toggleLetterSwitch,因此,它找不到它。将ifs更改为#if view.toggleLetterSwitch,看看是否有效。它确实有效!切换togglePermitSwitch只是因为出于某种原因它找不到templateID,但这是另一个问题。可能是因为控制器/模型上存在DoctTemplateID;)这个.get('controller.docTemplateID')…您是对的,主销。这是一个链接,指向这个答案的正确问题@fanta你介意添加你的评论作为答案,这样我就可以检查它了吗?为什么我要在toggleLetterSwitch前面添加'view',而不是'controller'。当我从控制器调用某个东西时?在你的VpcYeoman.DocView中,你正在设置这个。set('ToggletterSwitch',true);因此,toggleLetterSwitch存在于您的视图中。
{{#if view.toggleLetterSwitch}}