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;
});
为什么如果在面板上选择评级值,然后更改模型和字段值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;
});