0

私の index.html は言う:

 <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);
      ....

しかしチェックは空です。

フィドル

4

3 に答える 3

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"}}
于 2012-11-05T13:17:02.027 に答える
1

問題は camelCasing にあり、routerキーワードを使用すると、バインドにルーターがありませんでした... This is the working fiddleの 代わりに
使用 しましたApp.outController.username

App.router.outController.username

于 2012-11-05T11:31:33.893 に答える
1

valueBinding のパス App.LoggedoutController.username が間違っています。App.LoggedoutController では、Ember.Controller.extend() を使用して定義したクラスを参照しています。おそらくコードのどこかで App.initialize() を使用しています。これにより、Controller がフレームワークによってインスタンス化されます。次に、パス App.router.loggedoutController を使用して取得できます。

注意: インスタンスの名前は常に小文字で始まります。クラスは常に大きなクラスです。

したがって、解決策は次のとおりです。 valueBindung="App.router.loggedoutController.username" を使用します

編集:必要なemberライブラリをリンクしていないため、フィドルが機能していません。「リソースの追加」の左側を見てください。そこで、Ember および Handlebars JS ファイルの正しい URL を指定する必要があります。

于 2012-11-05T11:20:53.363 に答える