我试图用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(),
});
注意 在我的控制器警报内显示正常。
警告Json
[{“CountryID”:1,“CountryName”:“United States”}]
在我的html页面中无法获得该值。
js code here
<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 -->
答案 0 :(得分:1)
执行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]);
答案 1 :(得分:0)
你可以尝试:
$.ajax({
url: 'http://localhost:63951/Home/GetAllCountry',
type: 'GET',
datatype: 'application/json',
async: false,
success: function (data) {
App.IndexController = Ember.ArrayController.extend({
model1: data
})
}
});
那:
{{ view Ember.Select
id="AddProfile_SelectCountry"
contentBinding="App.IndexController"
prompt="Select Country"
optionValuePath="model1.CountryName"
optionLabelPath="model1.CountryName"
valueBinding=default
}}
修改强>
这个肯定会起作用,但并不是真正有效:
$.ajax({
url: 'http://localhost:63951/Home/GetAllCountry',
type: 'GET',
datatype: 'application/json',
async: false,
success: function (data1) {
$.ajax({
url: 'http://localhost:63951/Home/GetAllCities',
type: 'GET',
datatype: 'application/json',
async: false,
success: function (data2) {
App.IndexController = Ember.ArrayController.extend({
model1: data1
model2: data2
})
}
})
}
});
也许你可以尝试类似的东西:
App.IndexController = Ember.ArrayController.create({});
$.ajax({
url: 'http://localhost:63951/Home/GetAllCountry',
type: 'GET',
datatype: 'application/json',
async: false,
success: function (data) {
App.IndexController.extend({
model1: data
})
}
});
$.ajax({
url: 'http://localhost:63951/Home/GetAllCities',
type: 'GET',
datatype: 'application/json',
async: false,
success: function (data) {
App.IndexController.extend({
model2: data
})
}
});
但我不是Ember的专家抱歉。