【问题标题】:Passing values back to the 'View' from 'Controller' class将值从“控制器”类传回“视图”
【发布时间】:2012-05-06 15:25:17
【问题描述】:

在我的视图中,我添加了一个按钮,当我单击它时,会调用 Controller 类。 View (textfield values) 中的值将通过 Web 服务的 URL 发送。然后服务器会返回一个如下所示的 JSON 字符串;

{“价值”:“成功”}

现在,我需要将此 JSON 字符串发送回视图,视图将根据 JSON 响应向用户发出警报。如果 JSON 返回 SUCCESS,则会显示 Success 警报,如果 JSON 返回 FAIL,则会显示 Fail 警报。

1.) 在我的代码中,我只能显示来自 VIEW 的 JSON 响应,但是如何将其发送到控制器? (var text = response.responseText; 显示 JSON 响应)

2.) 我怎样才能将字符串与视图分开,只从 JSON 响应中获取 SUCCESS 或 FAIL 字符串?

按钮实现,来自视图类

xtype:'button',
                   id:'when_button_click',
                   text:'Send',
                   ui:'confirm',

控制器类

Ext.define('myapp.controller.testcont', {

                  extend: "Ext.app.Controller",
                  config: {
                  refs: {
                  newNoteBtn: "#when_button_click"
                  },
                  control: {
                  newNoteBtn: {
                  tap: "onNewNote"
                  }
                  }
                  },
                  onNewNote: function () {
 var values = Ext.getCmp('form').getValues();
                 console.log("inside onNewNote function");

       Ext.Ajax.request({
                        url: 'http://call.com/the_webservice',
                        params : values,

                        failure: function (response) {
                        var text = response.responseText;
                         console.log("fail");

                        },                              success: function (response) {
                        var text = response.responseText;
                         console.log("success");

                        }

                        });



                  }

                  // init and launch functions omitted.
                  });

【问题讨论】:

    标签: cordova sencha-touch extjs sencha-touch-2


    【解决方案1】:

    1.) 在我的代码中,我只能显示来自 VIEW 的 JSON 响应,但如何将其发送到控制器?

    为什么要将值从controller 传回view

    我认为没有任何正当理由这样做。

    您可以像这样在Web Service的successfailure上显示控制器本身的Ext.Msg.alert

    .....
    .....
    url: 'http://call.com/the_webservice',
    params : values,
    
    failure: function (response) {
       var text = response.responseText;
       Ext.Msg.alert('Error','Error while executing Web Service');
    },
    
    success: function (response) {
       var text = response.responseText;
       Ext.Msg.alert('Success','Web Service code successfully executed');
    },
    .....
    .....
    

    2) 我怎么能把字符串从视图中分离出来,只得到 JSON 响应中的 SUCCESS 或 FAIL 字符串?

    编辑:

    做这样的事情..

    var result = Ext.decode(response.responseText);
    
    // result.value = SUCCESS or FAIL
    Ext.Msg.alert('Message',result.value);
    

    【讨论】:

    • 1.)“控制器”通常用于执行程序的功能(保存、删除、编辑功能等),“视图”用于显示警报(UI 组件用户)。这是我正在创建的登录屏幕,因此根据 JSON 响应成功/失败,如果登录成功或失败,我需要提醒用户(显示注册页面)。 2.) 我正在为 iPhone 和 Android 创建这个应用程序。 JSON 将包含 2 个响应 {"value":"SUCCESS"} 或 {"value":"FAIL"} 之一。所以我需要一种方法来获取 JSON 响应的 value 属性的值。
    • 1) 我看不出有任何理由简单地回调视图以显示弹出窗口。 2) 在访问它的value 属性之前,您需要将该Json 字符串解码为Json 对象..
    • 检查答案的编辑部分以显示适当的响应
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    相关资源
    最近更新 更多