jQuery Mobile将JSON传递给动态创建的页面

时间:2013-07-09 03:39:24

标签: jquery dom jquery-mobile

所以我陷入了一些新的jQuery Mobile技术。如果需要,我会很乐意添加更多细节,但是试图将其保持在更高的水平。为简单起见,这是一个工作流程

  1. Page 1您通过填写表单并提交
  2. 来创建“事物”
  3. 仍然在第1页然后你可以搜索你的'东西',它会在表格中返回所有漂亮的JSON
  4. 在漂亮的表格中,您可以点击编辑按钮并编辑“事物”
  5. 这就是我被困住的地方。我可以创建新页面的骨架,但不能使用JSON重新填充表单。它是可访问的,因为我可以console.log它并验证它正在进入新页面(尽管新页面的jqm中的概念有些不同?)

        $(function(){
            $('.resultsLocation').on('click', '.editLocation', function(){
                var ID = $(this).parent().siblings(':first').text();
                var wrapper = {};
                var location = {};
                wrapper.location = location;
                location.id = ID;
            $.ajax({
                type: 'POST',
                url: '/web/service/' + 'locationService' + '/' + 'getLocation',
                dataType: 'json',
                async:false,
                data: JSON.stringify(wrapper),
                success: function(msg) {
                var newPage = $("<div data-role='page' id='page' data-theme='a'>" + "<div id='content' data-role='content'>" + "<div data-role='fieldcontain'><label for='name'>Name</label><input type='text' name='name' id='name'>" + "</div> </div></div>" );
                var Name = msg.location.name;
                newPage.appendTo($.mobile.pageContainer);
                if(msg.success) {
                    $.mobile.changePage('#page');
                    //passes entire JSON string
                    console.log(JSON.stringify(msg.location));
                    //one more time to make sure
                    console.log('NEW PAGE' + Name);
                    //not populating field w/value
                    $("#name").val(Name);
                }
            },
            error: function(msg) {
                alert('oh shit');
            }
    
            });
        });
        });
    

    我有以下问题:

    1. 有更好的方法吗?比如将用户发送到单独的(不同文件)模板化页面?
    2. 由于您要编辑的数据会填充您填写的相同表单来创建它,是否最好以某种方式克隆表单(不确定.clone()是否正确 - 当我尝试时有奇怪的问题) - 必须比在var newPage
    3. 中编写所有HTML标记更好
    4. 为什么我可以记录数据但不能使用$('#name').val(Name);
    5. 访问它

0 个答案:

没有答案