I am new to Nativescript and trying to develop an android app.I am sending a GET request and from the response I have built a Listview.Now,I am trying to send a POST request when a item of Listview is selected.But I can not bind the context.So,my POST request is not properly working.My question is how can I bind the context of listview.
Js Controller:
var CategoryViewModel = require("../../shared/category_view_model");
var fetchModule = require("fetch");
var dialogsModule = require("ui/dialogs");
var observableModule = require("data/observable")
var page;
var data;
var categoryList = new CategoryViewModel([]);
var pageData = new observableModule.fromObject({
categoryList: categoryList
});
var UserViewModel = require("../../shared/brand_view_model");
var user = new UserViewModel();
exports.loaded = function(args) {
page = args.object;
page.bindingContext = pageData;
categoryList.empty();
categoryList.load();
};
function getBrand() {
user.register();
}
exports.brand=function (args) {
getBrand();
}
View:
<Page loaded="loaded">
<GridLayout>
<ListView items="{{ categoryList }}" itemTap="brand">
<ListView.itemTemplate>
<Label text="{{ category }}" horizontalAlignment="left" verticalAlignment="center" />
</ListView.itemTemplate>
</ListView>
</GridLayout>
</Page>
View-model for POST request:
var fetchModule = require("fetch");
var Observable = require("data/observable").Observable;
var observableArray = require("data/observable-array");
var goodsList = new observableArray.ObservableArray([]);
var pageData = require("data/observable").Observable;
function user(info) {
info = info || {};
// You can add properties to observables on creation
var viewModel = new Observable({
category: info.category || "",
});
viewModel.register = function() {
fetch("http://10.0.2.2:8000/user_signup", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
category: viewModel.get("category"),
})
}).then(r => { return r.json(); }).then(function (r) {
console.log("Success");
}, function (e) {
console.log("Error occurred " + e);
});
};
return viewModel;
}
function handleErrors(response) {
if (!response.ok) {
console.log(JSON.stringify(response));
throw Error(response.statusText);
}
return response;
}
module.exports = user;
;category: viewModel.get("category")from View-model is equal tocategory:"",best would be pass item bindindContext to register function from tap event - Marek Maszay