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

您的 valueBinding 中的路径 App.LoggedoutController.username 是错误的。使用 App.LoggedoutController,您可以引用您使用 Ember.Controller.extend() 定义的类。您可能在代码中的某个地方使用了 App.initialize()。这会导致控制器被框架实例化。然后您可以使用路径 App.router.loggedoutController 来检索它。

请记住:实例名称始终以小写字母开头。上课总是一个大的。

所以解决方案是:使用 valueBindung="App.router.loggedoutController.username"

编辑:您的小提琴不起作用,因为您没有链接所需的 ember 库。查看“添加资源”中的左侧。在那里,您必须为 Ember 和 Handlebars JS 文件指定正确的 URL。

于 2012-11-05T11:20:53.363 回答
1

问题在于camelCasing&使用router关键字,您没有绑定路由器...
您使用 App.outController.username
而不是
App.router.outController.username
This is the working fiddle

于 2012-11-05T11:31:33.893 回答