2015-04-16 22 views
1

为什么如果您在评定值面板上选择,然后更改模型和字段值选择。但是如果恰恰相反,选择select,那么面板评级中的重复值不会发生?AngularJs。了解不同控制器中的ng模型

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> 

小提琴:http://jsfiddle.net/smtncL3q/1/

回答

1

我已经设法通过在rating指令范围中注入ngModel来获得此工作,并为该值分配一个监视。

scope: { 
    ngModel: '=' 
}, 

...然后连接函数中:

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

Updated Fiddle

+1

哦!谢谢,我忘了我们必须考虑模型应该如何遵循指令而不是控制器! – user3843670

0

这是一个有点难受,抓住你的jsfiddle究竟如何工作的,但我建议你在你的ngModel使用$parsers$formatters。分析器功能在点击评分时更新模型,格式化程序功能在select更新模型时更新评分视图值。

您的解决方案可以修复更多黑客代码,但它不会提高可读性。