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
Events backbone.js-mouseover终止视图上的事件_Events_Backbone.js_Views_Mouseover - Fatal编程技术网

Events backbone.js-mouseover终止视图上的事件

Events backbone.js-mouseover终止视图上的事件,events,backbone.js,views,mouseover,Events,Backbone.js,Views,Mouseover,这是一个简单的todo应用程序,目前仅列出ul集合视图中的几个li视图。我试图使click事件触发一个简单的showAlert函数 如果我将鼠标停留在其中一个任务视图(li)上并刷新页面,使鼠标在重新加载后悬停在该特定li上,则单击事件将触发showAlert功能 问题是,一旦我移动鼠标(很可能触发鼠标悬停事件),我将丢失所有任务视图(li)上的单击事件,包括我最初悬停的视图 根据我能找到的所有与此问题密切相关的帖子,我尝试在不同的地方使用这个.delegateEvents(),但没有成功 前面

这是一个简单的todo应用程序,目前仅列出ul集合视图中的几个li视图。我试图使click事件触发一个简单的showAlert函数

如果我将鼠标停留在其中一个任务视图(li)上并刷新页面,使鼠标在重新加载后悬停在该特定li上,则单击事件将触发showAlert功能

问题是,一旦我移动鼠标(很可能触发鼠标悬停事件),我将丢失所有任务视图(li)上的单击事件,包括我最初悬停的视图

根据我能找到的所有与此问题密切相关的帖子,我尝试在不同的地方使用这个.delegateEvents(),但没有成功

前面的代码

(function() {

  window.App = {
    Models: {},
    Collections: {},
    Views: {}
  };

  window.template = function(id) {
    return _.template( $('#' + id).html() );
  };

  App.Models.Task = Backbone.Model.extend({});

  App.Collections.Tasks = Backbone.Collection.extend({
    model: App.Models.Task
  });

  App.Views.Tasks = Backbone.View.extend({
    tagName: 'ul',

    render: function() {
      this.collection.each(this.addOne, this);
      return this;
    },

    addOne: function(task) {
      var taskView = new App.Views.Task({ model: task });
      this.$el.append(taskView.render().el);
    }
  });
  var tasksCollection = new App.Collections.Tasks([
    {
      title: 'Task 1',
      priority: 3
    },
    {
      title: 'Task 2',
      priority: 4
    },
    {
      title: 'Task 3',
      priority: 5
    }
  ]);

  var tasksView = new App.Views.Tasks({ collection: tasksCollection });
  $('.tasks').html(tasksView.render().el);

})();
这是有争议的观点

  App.Views.Task = Backbone.View.extend({
    tagName: 'li',

    events: {
      'click': 'showAlert'
    },

    showAlert: function() {
      alert('yes!');
    },

    render: function() {
      this.$el.html( this.model.get('title') );
      return this;
    }
  });
程序代码

(function() {

  window.App = {
    Models: {},
    Collections: {},
    Views: {}
  };

  window.template = function(id) {
    return _.template( $('#' + id).html() );
  };

  App.Models.Task = Backbone.Model.extend({});

  App.Collections.Tasks = Backbone.Collection.extend({
    model: App.Models.Task
  });

  App.Views.Tasks = Backbone.View.extend({
    tagName: 'ul',

    render: function() {
      this.collection.each(this.addOne, this);
      return this;
    },

    addOne: function(task) {
      var taskView = new App.Views.Task({ model: task });
      this.$el.append(taskView.render().el);
    }
  });
  var tasksCollection = new App.Collections.Tasks([
    {
      title: 'Task 1',
      priority: 3
    },
    {
      title: 'Task 2',
      priority: 4
    },
    {
      title: 'Task 3',
      priority: 5
    }
  ]);

  var tasksView = new App.Views.Tasks({ collection: tasksCollection });
  $('.tasks').html(tasksView.render().el);

})();

似乎工作得很好,谢谢Jack,我将我的主干脚本src链接到了您列出的src,它工作了,然后我恢复到我的本地开发版本,它工作了吗?非常奇怪,但谢谢你没问题,因为问题似乎无法重现,我将投票结束。