我试图显示使用ember js的下拉列表。使用Ajax GET方法。但是它无法返回任何值。
我对Ajax的要求
这是我的代码:
App.IndexController = Ember.ArrayController.extend({
model1: function () {
var Category1 ;
$.ajax({
url: 'http://localhost:63951/Home/GetAllCountry',
type: 'GET',
datatype: 'application/json',
async: false,
success: function (data) {
alert(data);
Category1 = data;
}
});
return Category1;
}.property(),
});
注意
内部控制器警报显示正常。
提醒杰森
[{“ CountryID”:1,“ CountryName”:“美国”}]
在我的html页面中无法获得该值。
js代码在这里
<script type="text/x-handlebars">
<h2>Welcome to Ember.js</h2>
{{outlet}}
</script>
<script type="text/x-handlebars" id="index">
<div>
{{view "select" id="AddProfile_SelectCountry" content=model1 prompt="Select Country" optionValuePath="content.CountryName" optionLabelPath="content.CountryName" valueBinding=default }}
</div>
</script>
<script src="js/libs/jquery-1.10.2.js"></script>
<script src="js/libs/handlebars-v1.3.0.js"></script>
<script src="js/libs/ember-1.8.1.js"></script>
<script src="js/appnew.js"></script>
<!-- to activate the test runner, add the "?test" query string parameter -->
最佳答案
当您执行Category1 = data;
时,会将变量标签Category1
设置为数据值。您要做的是更改该标签引用的对象。
最好将Category1
设为Ember对象,并通过数据设置其属性。像这样:
model1: function () {
var Category1 = Ember.Object.create();
$.ajax({
url: 'http://localhost:63951/Home/GetAllCountry',
type: 'GET',
datatype: 'application/json',
async: false,
success: function (data) {
alert(data)
Category1.setProperties(data);
}
});
return Category1;
}.property(),
如果您的数据是以数组形式输入的,但是您只想要第一个元素(如上所示),则可以改为
Category1.setProperties(data[0]);