Javascript ng显示嵌套在ng repeat-won';t更新

Javascript ng显示嵌套在ng repeat-won';t更新,javascript,angularjs,ng-repeat,ng-show,Javascript,Angularjs,Ng Repeat,Ng Show,我在SO和Google上都看过了,看到了一大堆ng show在ng repeat中不起作用的原因(范围问题、绑定问题等),但我不能完全确定我的为什么不起作用。我希望多给我一双眼睛能帮上忙。我对Angular非常陌生,所以希望我的代码能有一些意义 目标:当$scope.current_set更改时,可见的lmf OptiStart更改。当前,只有第一个optionset通过决策树:loaded加载,然后当我尝试通过clickbox:clicked加载下一个optionset时,$scope。当前设

我在SO和Google上都看过了,看到了一大堆ng show在ng repeat中不起作用的原因(范围问题、绑定问题等),但我不能完全确定我的为什么不起作用。我希望多给我一双眼睛能帮上忙。我对Angular非常陌生,所以希望我的代码能有一些意义

目标:当
$scope.current_set
更改时,可见的
lmf OptiStart
更改。当前,只有第一个optionset通过
决策树:loaded
加载,然后当我尝试通过
clickbox:clicked
加载下一个optionset时,
$scope。当前设置更改,但视图不会更新

JS

HTML


显然
lmf OptiStart
为每个条目创建了一个独立的作用域。这些子作用域具有到父级的
当前\u集的链接,但它们不维护双向绑定。因此,当替换事件处理程序中的
current\u set
值时,子作用域不知道
current\u set
已更改,它们仍然引用旧值

您可以这样重写事件处理程序:

$scope.current_set.name = Decision_Tree.get_next_optionset().name;
<div ng-controller='OptionsetCtrl as vm'>
  <div ng-repeat='set in Optionsets.option_sets'>
    <div ng-show="set.name == vm.current_set.name" lmf-optionset="{{set.name}}"></div>
  </div>
</div>
或者您可以使用
控制器作为
结构,如下所示:

$scope.current_set.name = Decision_Tree.get_next_optionset().name;
<div ng-controller='OptionsetCtrl as vm'>
  <div ng-repeat='set in Optionsets.option_sets'>
    <div ng-show="set.name == vm.current_set.name" lmf-optionset="{{set.name}}"></div>
  </div>
</div>