将数据传递给视图
Nativescript Pass data to view
我正面临一个问题,而开发一个原生脚本android应用程序。我试图发送一个POST请求,并从该请求我试图得到一个响应。使用这个响应,我试图填充一个ListView。我已经成功发送了post请求,并得到了服务器的响应。但问题是我无法填充listview。这是我的代码-
Register.xml
<Page loaded="loaded">
<StackLayout>
<Image src="res://logo" stretch="none" horizontalAlignment="center"/>
<TextField text="{{ name }}" id="name" hint="Name" />
<TextField text="{{ email }}" id="email" hint="E-mail" />
<TextField text="{{ password }}" secure="true" hint="Password" />
<Button text="Sign Up" tap="register" />
</StackLayout>
</Page>
Register.js
var dialogsModule = require("ui/dialogs");
var frameModule = require("ui/frame");
var UserViewModel = require("../../shared/view-models/user-view-model");
var user = new UserViewModel();
exports.loaded = function(args) {
var page = args.object;
page.bindingContext = user;
};
function completeRegistration() {
user.register()
.then(function() {
dialogsModule
.alert("Your account was successfully created.")
.then(function() {
frameModule.topmost().navigate("views/list/list");
});
}).catch(function(error) {
console.log(error);
dialogsModule
.alert({
message: "Unfortunately we were unable to create your account.",
okButtonText: "OK"
});
});
}
exports.register = function() {
completeRegistration();
};
用户视图model.js
function User(info) {
info = info || {};
var viewModel = new Observable({
name: info.name || "",
email:info.email || "",
password: info.password || "",
});
viewModel.register = function() {
return fetchModule.fetch("http://10.0.2.2:8000/user_signup", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
name: viewModel.get("name"),
email:viewModel.get("email"),
password:viewModel.get("password"),
}).then(r => { return r.json(); }).then(function (r) {
for(var i=0;i<r.length;i++){
var goods={name:r[i].name}
goodsList.push(goods);
};
console.log(goodsList);
}, 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;
}
function pageLoaded(args) {
var page = args.object;
pageData.set("goodsList", goodsList);
page.bindingContext = pageData;
}
module.exports = User;
列表视图
<Page loaded="pageLoaded">
<GridLayout>
<ListView items="{{ goodsList }}">
<ListView.itemTemplate>
<Label text="{{ name }}" horizontalAlignment="left" verticalAlignment="center"/>
</ListView.itemTemplate>
</ListView>
</GridLayout>
</Page>
让你的register()
函数返回一个promise来解析请求的响应。在此之后,有NavigationEntry
,您可以在使用topmost().navigate
In User-view model.js
:
viewModel.register = function() {
return new Promise<any>((resolve, reject) => {
fetchModule.fetch("http://10.0.2.2:8000/user_signup", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
name: viewModel.get("name"),
email:viewModel.get("email"),
password:viewModel.get("password"),
}).then(r => { return r.json(); }).then(function (r) {
for(var i=0;i<r.length;i++){
var goods={name:r[i].name}
goodsList.push(goods);
};
resolve(goodsList);
}, function (e) {
reject(e);
});
则在register.js
中:
function completeRegistration() {
user.register()
.then(function(result) {
dialogsModule
.alert("Your account was successfully created.")
.then(function() {
frameModule.topmost().navigate({
moduleName: "view/list/list",
context: {goodsList: result}
});
});
}).catch(function(error) {
console.log(error);
dialogsModule
.alert({
message: "Unfortunately we were unable to create your account.",
okButtonText: "OK"
});
});
}
然后在列表页的控制器中:
function pageLoaded(args) {
var page = args.object;
var context = page.navigationContext;
page.bindingContext = context;
}
相关文章:
- 如何在具有某些 UI 视图的状态中管理工厂单个请求数据
- 如何处理数据视图中项目的鼠标点击
- 每隔5秒从数据库获取数据,并通过AJAX将其发送到视图
- AngularJS:点击选项卡刷新视图中的数据
- 如何在angularjs中检查Kendo树视图数据绑定事件
- 将工厂服务数据发送到控制器,以便在视图中使用
- 从Rails视图填充HighChart数据
- 自定义筛选器不'我不使用django数据表视图创建的ajax.data.Json
- 通过jquery将网格视图数据发送到另一个页面
- 清除网络视图数据
- 在这种情况下如何获取部分视图数据
- $_POST 树视图数据
- 如何将视图数据绑定到模型属性
- 将部分视图数据传递给控制器
- 一次将网格视图数据从客户端发送到服务器端
- VueJS和vue-router:使用v-link时,视图数据不会更新
- 用编辑表单替换视图数据
- 隐藏网格视图数据,但仍可访问
- 用部分视图数据asp.net mvc5创建一个弹出窗口
- 如何将html视图数据或(Python)服务器数据传输到Angular或Javascript