Angularjs 从局部更新控制器作用域中的数组

Angularjs 从局部更新控制器作用域中的数组,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我正在使用isteven multi-select和一个控制器(ListController),该控制器使用“$scope.mainCategories”表示由“勾选”布尔值填充的内容 在应用程序的标题中,我使用select元素允许用户选择单个类别(然后转发到列表页面)。我正在使用此select元素切换$scope.mainColutions中勾选的布尔值 两者都使用相同的控制器,尽管通过UI路由器分别引用(可能的问题) 然后,isteven multiselect和select元素在同一部分中

我正在使用isteven multi-select和一个控制器(ListController),该控制器使用“$scope.mainCategories”表示由“勾选”布尔值填充的内容

在应用程序的标题中,我使用select元素允许用户选择单个类别(然后转发到列表页面)。我正在使用此select元素切换$scope.mainColutions中勾选的布尔值

两者都使用相同的控制器,尽管通过UI路由器分别引用(可能的问题)

然后,isteven multiselect和select元素在同一部分中—功能正常—当在单独的部分上时,功能中断


x
可能不是您所期望的,因为您无法在此行中查找对象的索引,除非您传入实际对象

var x = $scope.mainCategories.indexOf(item);
我想你是想通过这样的考试:

{
  category: "Adventure",
  ticked: false
}
为了得到索引,它不会起作用。例如,您需要在数组上循环并匹配
类别

不过,您修改外部数组的方法很好


请参见此示例以了解我的意思:

var-people=[
{name:'Shomz'},
{姓名:'约翰'}
];
警报(people.indexOf({name:'John'}));//-1:找不到对象的副本
警惕(people.indexOf(people[1]);//1:找到实际参考

只需让您的函数获取要修改的对象,并从视图中传入即可。

不清楚您的要求。请添加更多详细信息。在这种情况下,
Outside function scope
意味着什么?谢谢@charlietfl,我更新了标题、内容并添加了plunker。plunker中到底有什么不起作用?投票结束此操作并不费事解释。抱歉@Shomz,我正在尝试将我的问题分成更小的步骤,plunker部分正在工作。。。我无法看到它正在工作,因为我正在使用勾选的值填充isteven multi-select指令。我是否应该更新这个问题以包括为什么multi-select没有更新?“我假设”我没有。假设
是实际对象更为合理。就像在
  • 中一样,在这种情况下不会出现问题,因为它是有效的。哦,我们现在有一个功能齐全的plunker链接。。。我不确定问题出在哪里。@shomz你是对的……这不是从中传入的项目view@charlietfl,事实上,我现在完全糊涂了,因为plunker工作得很好。我想我自己也糊涂了,解释错了。事实上,结果证明它工作得很好,尽管它没有解决任何问题,但仍然+1。
    {
      category: "Adventure",
      ticked: false
    }
    
    $scope.update = function(item) {
      item.ticked = true; // ?
    };
    
    $scope.mainCategories = [{
      category: "Adventure",
      ticked: false
    },{category: "Fantasy", 
    ticked: false}];