c# - Custom json doesnt work in knockout -
i have html:
<select data-bind="options: products, optionstext:nome"></select> and script:
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); } }); the operation works if use comented products inner ajax. if use data result api (mvc/c#):
public string getcadastroprodutoes() { var data = in db.cadastroproduto group a.marcanome marcas select new { products = db.cadastroproduto.where(x => x.marcanome == marcas.key), nome = marcas.key }; javascriptserializer jss = new javascriptserializer(); return jss.serialize(data); } if run code result every letter in collection received return option in select.
the problem is... when use attribution:
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" }]; i products variable json object, when y api result have string.
the solution parse json in attribution this:
products = json.parse(data); so string result converted in json object.
Comments
Post a Comment