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
Javascript backbone.js根据ajax请求的结果采取不同的操作_Javascript_Backbone.js - Fatal编程技术网

Javascript backbone.js根据ajax请求的结果采取不同的操作

Javascript backbone.js根据ajax请求的结果采取不同的操作,javascript,backbone.js,Javascript,Backbone.js,我有一个主干应用程序,它从url读取一个svn文件路径,然后“ls”是它给定的路径。通常,它只是在表中枚举ls的结果。但我想做的是检查路径是否只对应于特定的文件,在这种情况下,取而代之的是获取并显示文件的内容 做这件事的惯用方法是什么?现在,在我称之为目录模型的解析函数中,我正在考虑这样做: parse: function(response, options) { if (response.length == 1 && response[0].type == "fil

我有一个主干应用程序,它从url读取一个svn文件路径,然后“ls”是它给定的路径。通常,它只是在表中枚举ls的结果。但我想做的是检查路径是否只对应于特定的文件,在这种情况下,取而代之的是获取并显示文件的内容

做这件事的惯用方法是什么?现在,在我称之为目录模型的解析函数中,我正在考虑这样做:

  parse: function(response, options) {
    if (response.length == 1 && response[0].type == "file") {
      // what to do here?
    }
    this.get('entries').reset(response);
    $("#indicator").hide();
    $('#directory-contents').show();
    this.trigger('change');
    return {};
  },
所以我很想在这里发出一个ajax请求来获取文件内容(例如,在
//在这里做什么?
),但是a)直接发出一个ajax请求似乎不太好,b)我觉得我把两个模型混合在了一起。现在,我的DirectoryView可能需要检查某种标志,以判断它是否实际呈现了一个目录,或者只是一个特定的文件


有什么更好的方法来处理这个问题吗?

好的,在查看评论并进一步了解您的领域之后,我建议以下方法:

  • 创建一个表示文件系统节点的FSEntry模型(如果愿意,可以使用inode)。关键在于,可以表示目录或文件
  • FSEntry应该有一个
    type
    string属性,可以是“目录”、“文件”、“符号链接”等
  • 基本的fsEntry.fetch()应该只加载元数据,包括
    type
    字段
  • 视图渲染可以响应模型事件进行渲染。根据模型实例的
    类型
    ,适当地进行渲染(如果愿意,也可以在视图主体的不同模板中进行交换)
  • 如果
    类型
    为“文件”,则让视图调用fsEntry.fetchContent(),并响应相应的
    更改:内容
    事件以呈现文件内容
  • 稍后,您可以向模型添加逻辑以缓存
    内容
    数据,如果缓存中有新数据,则不重新蚀刻数据,但只有在所有功能正确后,才应添加此优化

基于代码示例的旁注:不要在模型或集合代码中操作DOM!这是MV*facepalm失败。

我不打算在模型中操作DOM,但如果我想要文件的实际内容,我将不得不发出单独的ajax请求。除了在上面的
parse
函数中使用
$.ajax(…)
之外,还有什么比这更好的方法吗?好吧,您可以设置一个事件处理程序,以便在
change:type
事件处理程序时,如果文件内容尚未加载,您可以在该点获取它。您还可以创建一个单独的
loadContent
方法,视图可以调用该方法。我认为您有一个包含两组数据的FSEntry:元数据和文件内容。遵循主干模式,其中
fetch
获取元数据,并创建另一个
fetchContent
方法来加载内容。我不喜欢模型在元数据到达后自动获取内容的想法,尽管您可以这样做。我宁愿让一个控制器或视图告诉模型获取内容。