2012-11-05 56 views
0

我的index.html說:綁定Ember.TextField值到另一個控制器的性能

<script type="text/x-handlebars" data-template-name="loggedout"> 
<label>Username: </label>{{view Ember.TextField placeholder="your username" valueBinding="App.LoggedoutController.username"}}<br /> 
<label>Password: </label>{{view Ember.TextField placeholder="your password" valueBinding="App.LoggedoutController.password" type="password"}}<br /> 
<br /><button {{action login}}>Login</button> 
</script> 

行動進入我的路由器會被重定向到我的控制器

App.LoggedoutController = Ember.Controller.extend({ 

    username: '', 
    password: '', 
    isError: false, 

    tryLogin: function() { 
     console.log("InController: launched"); 
     var username = this.get("username"); 
     console.log("Check:" + username); 
     .... 

但檢查是空的。

Fiddle

+0

嘗試=的ValueBinding 「App.router.LoggedoutController.username」 否則容易張貼一個簡單的小提琴...... –

+0

它不工作。我希望能在沒有小提琴的情況下解決這個問題。我如何檢查我是否處於嚴密的視野?可能this.get('用戶名')不起作用。 –

+1

oops it shud be「App.router.loggedOutController.username」(camelCased),this.get(「username」)是正確的... –

回答

1

在你的的ValueBinding路徑App.LoggedoutController.username是錯誤的。通過使用App.LoggedoutController,您可以引用使用Ember.Controller.extend()定義的類。可能在代碼的某個位置使用了App.intialize()。這導致控制器被框架實例化。然後,您可以使用路徑App.router.loggedoutController來檢索它。

記住:實例名稱始終以小寫字母開頭。課程總是很大。

因此,解決辦法是:使用valueBindung =「App.router.loggedoutController.username」

編輯:你的小提琴不工作,因爲你沒有連接所需的餘燼庫。在「添加資源」中查看左側。您必須爲Ember和Handlebars JS文件指定正確的URL。

1

的問題是與使用router關鍵字駝峯規則&,你沒有路由器詮釋他結合......
您使用 App.outController.username
而不是
App.router.outController.username
這是工作fiddle

2

如果你在你的路由器中調用「connectOutlet」,那麼你不必擔心App.loggedOutController位(從MVC的角度來看,最好儘可能地保留模板中的「App。」)。

 loggedOut: Ember.Route.extend 
     route: '/signin' 
     connectOutlets: (router) -> 
     router.get("applicationController").connectOutlet 'loggedOut' 

然後在你的模板,你可以簡單地有:

{{view Ember.TextField placeholder="your username" valueBinding="username"}} 
相關問題