2013-08-23 2 views
0

У меня есть аналогичная форма, когда я хочу получить представленные значения в контроллере newItem, я получаю значения «undefined». Что не так?Значения формы Ember не определены

<form role="form" {{ action 'add' target="newItem" on="submit"}}> 
    <h2>New category</h2> 
    <div class="form-group"> 
     <label>Category title</label> 
     {{input value=title class="form-control" type="text" placeholder="Title"}} 
    </div> 
    <div class="form-group"> 
     <label>Category description</label> 
     {{textarea value=description class="form-control" placeholder="Description"}} 
    </div> 
    <div class="form-group"> 
     {{input type="submit" class="btn" }} 
    </div> 
    </form> 

App.NewItemController = Ember.ObjectController.extend({ 
    add: function(){ 
     console.log(this.get('title')); // undefined 
    } 
    }); 

Update:
Эта форма на ApplicationRoute:

App.ApplicationRoute = Ember.Route.extend({ 
    setupController: function(controller, model) { 
     var newItem = this.controllerFor('NewItem'); 
     controller.set('newItem', newItem); 
    } 
    }); 

ответ

0

Вы должны попробовать использовать Ember.TextField и Ember.TextArea:

<form role="form" {{ action 'add' target="newItem" on="submit"}}> 
    <h2>New category</h2> 
    <div class="form-group"> 
     <label>Category title</label> 
     {{view Ember.TextField valueBinding="title"}} 
    </div> 
    <div class="form-group"> 
     <label>Category description</label> 
     {{view Ember.TextArea valueBinding="description"}} 
    </div> 
    <div class="form-group"> 
     {{input type="submit" class="btn" }} 
    </div> 
</form> 

В title и description значения теперь связаны в соответствующие поля ввода.

Update:

Я вижу, ваша цель является newItem контроллер, поэтому я думаю, что эта форма не связана с NewItemController, таким образом, значения не связаны с NewItemController. Решение:

App.MyFormController = Ember.Controller.extend({ 

    needs: ['newItem'] 

    add: function(){ 
     var newItemController = this.get('controllers.newItem'); 
     newItemController.add(this.get('title'), this.get('description')); 
    } 
}); 

App.NewItemController = Ember.ObjectController.extend({ 
    add: function(title, description){ 
     // add the new item here 
    } 
}); 
+0

Я обновил мой вопрос – Dodjs

+0

Вы связывание этих значений в 'ApplicationController' (который является своим родом плохо), если я не ошибается –

+0

я думаю, что это множественный контроллер внутри одного маршрута не слишком ясно, для меня.. – Dodjs

Смежные вопросы