Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nativescript传递要查看的数据_Javascript_Android_Arrays_Nativescript - Fatal编程技术网

Javascript Nativescript传递要查看的数据

Javascript Nativescript传递要查看的数据,javascript,android,arrays,nativescript,Javascript,Android,Arrays,Nativescript,我在开发nativescript android应用程序时遇到一个问题。我试图发送一个POST请求,并试图从该请求中获得一个响应。使用此响应,我试图填充一个ListView。我已成功发送post请求并从服务器获得响应。但问题是我无法填充listview。这是我的代码- Register.xml <Page loaded="loaded"> <StackLayout> <Image src="res://logo" stretch="no

我在开发nativescript 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>
用户视图模型.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();
};
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;
功能用户(信息){
info=info |{};
var viewModel=新的可观测值({
名称:info.name | |“”,
电子邮件:info.email | |“”,
密码:info.password | |“”,
});
viewModel.register=函数(){
返回fetchModule.fetch(“http://10.0.2.2:8000/user_signup", {
方法:“张贴”,
标题:{“内容类型”:“应用程序/json”},
正文:JSON.stringify({
名称:viewModel.get(“名称”),
电子邮件:viewModel.get(“电子邮件”),
密码:viewModel.get(“密码”),
}).then(r=>{return r.json();}).then(function(r){
对于(var i=0;i使您的
register()
函数返回一个承诺,用于解析来自请求的响应。之后,在
NavigationEntry
中,您可以在使用topmost()时将a上下文对象(在本例中是响应)传递到新页面。navigate

用户视图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);
});
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;
}

很抱歉,Dinh Le先生,但我遇到了一个错误。解析没有定义。Dinh Le先生,现在我没有发现任何错误,但我也无法导航到列表视图。请确保您使用的是具有列表视图页面的正确控制器。Dinh Le先生,我是Nativescript的新手。我不知道您所说的控制器是什么意思。您能帮助我吗?是list.js吗?是的,f例如,您有
list.xml
,那么控制器将是
list.js
。以及
register.xml
有控制器
register.js
。其想法是当用户点击register按钮时,它将触发
register.js
中的一个函数,该函数将调用函数
register()
(这将向后端发送请求并返回承诺)。请求完成后,您将使用刚才得到的响应导航到
list.xml
,并将其绑定到page.bindingContext
function pageLoaded(args) {
    var page = args.object;
    var context = page.navigationContext;
    page.bindingContext = context;
}