我有这个HTML:
<select data-bind="options: products, optionsText:Nome"></select>
这个脚本:
var ViewModel = function () {
var self = this;
var dados;
self.category = ko.observable();
};
var products;
$.ajax({
type: "GET",
url: "/api/APIProduto",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
//products = [{ "products": [{ "CadastroItemOrcamento": [], "ID": 8, "MarcaNome": "MudarNome", "MarcaEspecificacao": "INOCULANTE", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 9, "MarcaNome": "MudarNome", "MarcaEspecificacao": "STANDAK TOP", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 10, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BROADACRE EXTRA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 11, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BOOSTER", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 12, "MarcaNome": "MudarNome", "MarcaEspecificacao": "CLORETO DE POTÁSSIO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 13, "MarcaNome": "MudarNome", "MarcaEspecificacao": "PRIORIXTRA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 14, "MarcaNome": "MudarNome", "MarcaEspecificacao": "APROUCH PRIMA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 15, "MarcaNome": "MudarNome", "MarcaEspecificacao": "GLIFOSATO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 16, "MarcaNome": "MudarNome", "MarcaEspecificacao": "LANNATE BR", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 17, "MarcaNome": "MudarNome", "MarcaEspecificacao": "NOMOLT", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 18, "MarcaNome": "MudarNome", "MarcaEspecificacao": "PREMIO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 19, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ÓLEO MINERAL (FUNGICIDA)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 20, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ÓLEO MINERAL (HERBICIDA)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 21, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ESPALHANTE SILICONADO (TODOS)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 22, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BROADACRE MN", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 23, "MarcaNome": "MudarNome", "MarcaEspecificacao": "GROWFLOW", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 24, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BORO SUPER", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 25, "MarcaNome": "MudarNome", "MarcaEspecificacao": "REFORCE", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 26, "MarcaNome": "MudarNome", "MarcaEspecificacao": "AGRIK", "MarcaAtiva": true }], "Nome": "MudarNome" }, { "products": [{ "CadastroItemOrcamento": [], "ID": 4, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "SUPERFOSFATO SIMPLES", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 5, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "ROUNDUP", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 6, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "ÓLEO MINERAL", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 7, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "SEMENTE DE SOJA", "MarcaAtiva": true }], "Nome": "MudarNomeTeste" }];
products = data
console.log(data)
ko.applyBindings(ViewModel());
},
error: function (error) {
alert(error.status + "<--and--> " + error.statusText);
}
});
如果我使用内部ajax的comented产品,该操作有效。如果我使用API(MVC / C#)的数据结果:
public string GetCadastroProdutoes()
{
var data = from a in db.CadastroProduto
group a by a.MarcaNome into Marcas
select new
{
products = db.CadastroProduto.Where(x => x.MarcaNome == Marcas.Key),
Nome = Marcas.Key
};
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Serialize(data);
}
如果我运行代码,结果是收到的集合中的每个字母都会在select中返回一个选项。
答案 0 :(得分:0)
问题是......当我使用此归因时:
products = [{ "products": [{ "CadastroItemOrcamento": [], "ID": 8, "MarcaNome": "MudarNome", "MarcaEspecificacao": "INOCULANTE", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 9, "MarcaNome": "MudarNome", "MarcaEspecificacao": "STANDAK TOP", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 10, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BROADACRE EXTRA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 11, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BOOSTER", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 12, "MarcaNome": "MudarNome", "MarcaEspecificacao": "CLORETO DE POTÁSSIO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 13, "MarcaNome": "MudarNome", "MarcaEspecificacao": "PRIORIXTRA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 14, "MarcaNome": "MudarNome", "MarcaEspecificacao": "APROUCH PRIMA", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 15, "MarcaNome": "MudarNome", "MarcaEspecificacao": "GLIFOSATO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 16, "MarcaNome": "MudarNome", "MarcaEspecificacao": "LANNATE BR", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 17, "MarcaNome": "MudarNome", "MarcaEspecificacao": "NOMOLT", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 18, "MarcaNome": "MudarNome", "MarcaEspecificacao": "PREMIO", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 19, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ÓLEO MINERAL (FUNGICIDA)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 20, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ÓLEO MINERAL (HERBICIDA)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 21, "MarcaNome": "MudarNome", "MarcaEspecificacao": "ESPALHANTE SILICONADO (TODOS)", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 22, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BROADACRE MN", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 23, "MarcaNome": "MudarNome", "MarcaEspecificacao": "GROWFLOW", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 24, "MarcaNome": "MudarNome", "MarcaEspecificacao": "BORO SUPER", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 25, "MarcaNome": "MudarNome", "MarcaEspecificacao": "REFORCE", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 26, "MarcaNome": "MudarNome", "MarcaEspecificacao": "AGRIK", "MarcaAtiva": true }], "Nome": "MudarNome" }, { "products": [{ "CadastroItemOrcamento": [], "ID": 4, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "SUPERFOSFATO SIMPLES", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 5, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "ROUNDUP", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 6, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "ÓLEO MINERAL", "MarcaAtiva": true }, { "CadastroItemOrcamento": [], "ID": 7, "MarcaNome": "MudarNomeTeste", "MarcaEspecificacao": "SEMENTE DE SOJA", "MarcaAtiva": true }], "Nome": "MudarNomeTeste" }];
我只是说product变量是一个json对象,但当y得到api结果时我有一个字符串。
解决方案是通过JSON解析这样的归属:
products = JSON.parse(data);
所以字符串结果将在Json对象中转换。