Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Backbone.js 从ajax中选择选项_Backbone.js_Backbone Stickit - Fatal编程技术网

Backbone.js 从ajax中选择选项

Backbone.js 从ajax中选择选项,backbone.js,backbone-stickit,Backbone.js,Backbone Stickit,我正在尝试使用下面的命令填充一个select View: Backbone.View.extend({ initialize: function () { this.setElement($('#templatePlaceholder')); }, bindings: { 'se

我正在尝试使用下面的命令填充一个select

 View: Backbone.View.extend({
                    initialize: function () {
                        this.setElement($('#templatePlaceholder'));
                    },
                    bindings: {

                        'select#List': {
                            observe: 'ddList',
                            selectOptions: {
                                collection: Q.when(getSelects.execute()).then(function (data) {
                                    console.dir(data);
                                    return data;
                                })

                            }
                        }
                    },
控制台返回一个数组对象:

 [ { value: 1, label: "a" },   { value: 2, label: "b" } ]
但我什么也得不到

如果我将集合定义为:

collection: function () { return [{ value: 1, label: "a" },{ value: 2, label: "b" }];}

然后一切正常。

这可能有两个问题:异步代码在
视图
被分配时会立即执行,这可能是不需要的;集合被分配给执行该承诺的结果,而不是
返回数据所返回的任何内容

一些解决方案:

1) 您可以在页面加载时引导选择选项。这是单页或主干应用程序中的一种流行模式。基本上,您让后端将公共数据的json数据结构组合在一起,然后将其作为javascript变量呈现给页面。因此,服务器端模板(jsp、erb、php)的外观如下:

<!DOCTYPE html>
...
    <script type="text/javascript">
       window.bootstrap = { users: <%= userjson %>, ddlist: <%= ddlistjson %> };
    </script>
...

不建议使用此方法,因为它可能会使您的UI处于一种不正常的状态,因为它会阻止其他javascript的运行,并且可能会挂断。

此方法可能存在两个问题:在分配
视图时,异步代码会立即执行,这可能是不需要的;集合被分配给执行该承诺的结果,而不是
返回数据所返回的任何内容

一些解决方案:

1) 您可以在页面加载时引导选择选项。这是单页或主干应用程序中的一种流行模式。基本上,您让后端将公共数据的json数据结构组合在一起,然后将其作为javascript变量呈现给页面。因此,服务器端模板(jsp、erb、php)的外观如下:

<!DOCTYPE html>
...
    <script type="text/javascript">
       window.bootstrap = { users: <%= userjson %>, ddlist: <%= ddlistjson %> };
    </script>
...

不建议使用此方法,因为它可能会使您的UI处于一种令人不安的状态,因为它会阻止其他javascript的运行,并且可能会挂断。

非常感谢。我知道这不是一个stickit或主干问题,而是一个javascript问题,但不管怎样你都帮助了我。np,让我知道它是否适合你。另外,请在github repo中随意发布stickit问题,我会在那里更快地找到它们。再次感谢。我进一步采纳了你的建议。我将整个主干对象组包装在promise中,保持async:true。这样,我可以在扩展主干之前预加载所有prereq对象。我肯定这也有问题,但它现在起作用了,而且没有阻塞。你是怎么解决的。我也有同样的问题。谢谢非常感谢,马特。我知道这不是一个stickit或主干问题,而是一个javascript问题,但不管怎样你都帮助了我。np,让我知道它是否适合你。另外,请在github repo中随意发布stickit问题,我会在那里更快地找到它们。再次感谢。我进一步采纳了你的建议。我将整个主干对象组包装在promise中,保持async:true。这样,我可以在扩展主干之前预加载所有prereq对象。我肯定这也有问题,但它现在起作用了,而且没有阻塞。你是怎么解决的。我也有同样的问题。谢谢