Я столкнулся с проблемой получения обновленного значения в представлении. Я думаю, что 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, даже если значение введено в текстовом файле.

1
niran 10 Дек 2012 в 07:17
Не могли бы вы сделать в jsfiddle?
 – 
NkS
10 Дек 2012 в 10:12
Попробуйте вместо этого valueBinding = "name", поскольку вы уже находитесь внутри помощника блока представления
 – 
Mudassir Ali
10 Дек 2012 в 12:06

1 ответ

Лучший ответ

Поскольку вы уже находитесь внутри помощника блока, вам не нужно связывать с помощью "view.name",

Но в случаях, когда приложение инициализируется маршрутизатором, а представления подключены к 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

2
Mudassir Ali 11 Дек 2012 в 08:53
Вы подаете в суд он работает! jsfiddle.net/GyHYg см. эту ссылку, она не работает
 – 
niran
11 Дек 2012 в 07:46
Это был довольно грубый пример, который я привел, я отредактировал вашу скрипку, чтобы она работала, нам нужно загрузить библиотеки ember и handlebar, чтобы код работал внутри панели управления ресурсами, вот ссылка jsfiddle.net/GyHYg/1
 – 
Mudassir Ali
11 Дек 2012 в 08:54