AngularJs。了解不同控制器中的 ng-model

AngularJs. Understanding ng-model in different controllers

为什么如果在面板上选择评级值,然后更改模型和字段值select。但如果相反,选择 select,那么面板评级上的重复值不会发生吗?

Html代码:

 <select name="post[vote][cinema]" ng-model="cinema" ng-change="set(cinema)">
 <p class="dash ng-isolate-scope ng-valid ng-dirty" ng-mouseleave="reset()" 
    tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="10" 
    aria-valuenow="4" ng-model="cinema" max="max">
      <a ng-repeat="r in range track by $index" ng-mouseenter="enter($index + 1)" 
          ng-click="rate($index + 1)" ng-class="{...}" class="ng-scope"></a>

Fiddle: http://jsfiddle.net/smtncL3q/1/

我有点难以理解您的 JSFiddle 究竟是如何工作的,但我建议您在 ngModel 上使用 $parsers$formatters。当您单击评级时,解析器函数会更新模型,当模型由 select.

更新时,格​​式化程序函数会更新评级视图值

您的解决方案可以使用更多骇人听闻的代码进行修复,但不会提高可读性。

我设法通过在 rating 指令范围内注入 ngModel 并在该值上分配监视来实现此功能。

scope: {
    ngModel: '='
},

... 然后在 link 函数中:

scope.$watch('ngModel', function(value) {
    scope.value = value;            
});

Updated Fiddle