EmberJS中的ValueBinding问题?

时间:2012-12-10 03:17:11

标签: ember.js

我在视图中获取更新值时遇到问题。我认为 valueBinding 无效

 <script type="text/x-handlebars" >
            {{#view App.Test }}
                <label>Name:</label>
                {{view Ember.TextField  placeholder="username" valueBinding="view.name"}} </br>  </br>
              {{/view}}
      </script>

App.Test = Ember.View.extend({

    name: null,

     submit: function(event) {
       // event.preventDefault();
       console.log(this.get('name'));

    }

})

当提交调用函数时, console.log(this.get('name')); allways显示NULL值,即使在textfiled中键入了值。

1 个答案:

答案 0 :(得分:2)

由于您已经在块助手中,因此不需要使用“view.name”进行绑定,但是在应用程序由路由器&amp ;;进行初始化的情况下。视图连接到outlets,您可能需要使用“view.name”来引用视图内的属性,例如

基本应用设置

MyApp = Ember.Application.create();

MyApp.Router = Ember.Router.extend({
  root: Ember.Route.create({
    index: Ember.Route.create({
      route: '/',
      redirectsTo: 'home',
      home: Ember.Route.create({
        route: '/home',
        connectOutlets: function(router){
          router.get('applicationController').connectOutlet('home');
        }
      })
    })
  })
});

MyApp.ApplicationView = Ember.View.extend({
  templateName: 'application'
})

MyApp.HomeView = Ember.View.extend({
  templateName: 'home',
  name: 'TheName'
})

MyApp.HomeController = Ember.Controller.extend({
  name: "Joey"
})

<script type="text/x-handlebars" data-template-name="application">
 {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="home">
  {{view.name}} I am from Home View
  {{name}} I am from the Home Controller
</script>

正如您所看到的,在这种情况下,当您执行{{name}}时,它会在控制器中查找属性。如果您想使用视图中的属性,则需要使用{{view.name}}

Fiddle