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 已更改,无法在主干网1.1.2中工作_Backbone.js - Fatal编程技术网

Backbone.js 已更改,无法在主干网1.1.2中工作

Backbone.js 已更改,无法在主干网1.1.2中工作,backbone.js,Backbone.js,代码笔: 预期行为:一次只能突出显示一项 当前行为:可以高亮显示多个项目 原因:在更改事件期间,当控制器检查时,HasChanged返回true 当我使用主干0.9.2运行这段代码时,它可以正常工作。当我使用1.1.2时,它不会 在这两个版本之间,的工作方式发生了根本性的变化吗?我相信这是理想的功能。每次设置模型本身时,模型的属性都会发生更改。因此,在多次设置模型之前,它将保留其更改。如果在选择不同的模型时清除了更改的散列,那么您在此处设置的代码将起作用。实际情况是,只要将模型设置为isSele

代码笔

预期行为:一次只能突出显示一项

当前行为:可以高亮显示多个项目

原因:在
更改
事件期间,当控制器检查时,HasChanged返回true

当我使用主干0.9.2运行这段代码时,它可以正常工作。当我使用1.1.2时,它不会


在这两个版本之间,
的工作方式发生了根本性的变化吗?

我相信这是理想的功能。每次设置模型本身时,模型的
属性都会发生更改。因此,在多次设置模型之前,它将保留其更改。如果在选择不同的模型时清除了更改的散列,那么您在此处设置的代码将起作用。实际情况是,只要将模型设置为
isSelected
,它将始终具有
isSelected==true
hasChanged('isSelected')
,因此它将永远不会通过将
isSelected
设置为
false的条件

实现您所寻找的目标的一种方法是将收集方法更改为:

onSelectedChanged: function(modelActive) {
  if(modelActive.get('isSelected') === true){
    this.each(function(model) {
      if (model != modelActive) {
        model.set({isSelected: false});
      }
    });
  }
}
请注意,我取出了
hasChanged
,因为这只是确认模型在以前某个点发生了更改。相反,我将主动选择的模型与正在迭代的模型进行比较。我们不想碰活动的那个。我还检查此方法是否是通过将
isSelected
设置为
true
触发的,因为如果不这样做,迭代模型的每个设置都将触发此方法并导致问题

唯一的限制是你不能选择同一个项目来关闭它