1

我在视图中获取更新值时遇到问题。我认为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')); 始终显示 NULL 值,即使在文本文件中键入了值。

4

1 回答 1

2

由于您已经在块助手中,因此您不需要使用 "view.name" 进行绑定,

但是在应用程序由路由器初始化并且视图连接到的情况下,outlets您可能需要使用 "view.name" 来请参阅视图内的属性,例如

Basic App Setup

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

于 2012-12-11T03:09:06.823 回答