2016-09-29 110 views
0

从文本框特定蛞蝓我完全陌生的余烬,所以请好:)重定向到烬

我有灰烬的应用程序,我想重定向到从文本框输入采取特定的蛞蝓。在我的.hbs中,我有以下代码:

<div class="liquid-container"> 
    <div class="liquid-child"> 
    <div class="desktop-layout-scroll-container"> 
     <div class="overlay-info-layout"> 
     <div class="overlay-info-layout-content"> 
      <h1 class="expired-overlay-status">{{t 'code.title'}}</h1> 
      <h2 class="expired-overlay-explanation"> 
      {{t 'code.description'}}<br> 
      </h2> 

      <div class="row"> 
      <div class="col-xs-offset-3 col-xs-6"> 
       <input name="txtSlug" type="text" id="txtSlug" class="field" />    
       <input type="submit" name="btnGo" value="" id="btnGo" class="btn" onclick="javascript:SubmitForm()" /> 
      </div> 
      </div> 

     </div> 
     </div> 
    </div> 
    </div> 
</div> 

<script type="text/javascript"> 
    function SubmitForm(){ 
     var Slugtxt = document.getElementById("txtSlug").value; 
     window.location = "http://www.google.com/" + Slugtxt; 
    } 
</script> 
+0

你这么做太错误了......不想太卑鄙或粗鲁,但请在编写代码之前阅读官方指南(https://guides.emberjs.com/v2.8.0/)。 –

回答

0

您不应该将JavaScript嵌入到Ember .hbs文件中。这段代码应该真正在你的控制器中用于这个类。首先,生成你的控制器:

ember g controller <name_of_route> 

然后在你的控制器里面,你要定义两件事情。 slugtxt变量,以及作为动作的重定向。这将是这个样子:

import Ember from 'ember'; 

export default Ember.Controller.extend({ 

    slugtxt: '', 

    actions: { 
    redirect() { 
     window.location = "http://www.google.com/" + this.get('slugtxt'); 
    } 
    } 
} 

然后,回到你的模板,你想改变你的输入被映射到从控制器slugtxt变量,并设置按钮的操作到redirect行动你在你的控制器中定义的。这将是这个样子:

{{input value=slugtxt}} 
<button {{action "redirect"}}>Submit</button> 

无需担心使用<input>标签,你通常不会是使用表单数据与Ember。

+0

嗨,汤姆。最后有时间解决您的问题。 当我尝试使用您的代码时,出现以下错误: controllers/index.js:第9行,第54列,'slugtxt'未定义。 –

+0

嗨,我编辑修复程序时出现了一个错误。现在尝试代码。 – Tom