如何将值ember视图传递给控制器

时间:2014-11-21 13:48:55

标签: asp.net-mvc-4 ember.js handlebars.js

我是漂亮的ember js开发新手。

我已经完成了以下代码的视图

 {{view  "select"  content=model    prompt="Please select a name"  selectionBinding=""    optionValuePath="content.body" optionLabelPath="content.title"}}

使用以下Json

posts = [{
    title: "Raja",
    body: "There are lots of à la carte software environments in this world."
}, {
    title: "Broken Promises",
    body: "James Coglan wrote a lengthy article about Promises in node.js."
}];

和路由器

App.InRoute = Ember.Route.extend({
    model: function () {    

        return posts;      
    }
});

我的要求是将该组合框选定值传递给控制器​​

App.InController = Ember.Controller.extend({

alert("combobox selected item")
});

以及我如何在.net mvc 4中访问该值apicontoller

 public class ValuesController : ApiController
    {
  string value=    combo box selected value
}

2 个答案:

答案 0 :(得分:0)

您只需要设置selectionBinding="someModelAttribute",双向数据绑定将负责在模型上设置所选值。

答案 1 :(得分:0)

您的“选择”视图的属性需要绑定到控制器上的属性:

将以下内容添加到视图的属性中: value = selectedItem

在您的控制器中:

添加“ selectedItem

App.InRoute = Ember.Route.extend({

    selectedItem: null,

    model: function () { 
      return posts;      
    }
});

现在你的所有设置都将它发送到你的Api终点。您可以创建一个动作处理程序并使其在那里发生。这是一个简单的例子:

App.InRoute = Ember.Route.extend({

   selectedItem: null,

   model: function () {
     return posts;      
   },

  actions: {
     submit: function(){
        $.ajax('/api/yourEndPoint', {type: 'POST', data: {body: this.get('selectedItem')} })
  }
}
});

在您的Handlebars模板中

<button {[action 'submit'}}>Submit</button>

在.NET API控制器中

public IHTTPActionResult Post(string body){
   //.NET's Model Binder will correctly pull out the value of the body keyvalue pair.
   //Now do with "body" as you will.
}

你应该真正研究使用Ember-Data,这真是太棒了。