我正在尝试创建一个简单的btn-group,如此
<div class="btn-group">
<label class="btn btn-primary"
ng-model="radioModel"
ng-repeat="playerClass in playerClasses"
ng-class="{{ playerClass.buttonClass }}"
uib-uncheckable='false'
uib-btn-radio="{{ playerClass }}">{{ playerClass.className }}</label>
</div>
在控制器中使用
$scope.playerClasses = cardFactory.getClasses();
$scope.radioModel = { className: 'value', buttonClass: 'value'};
但每当我点击其中一个按钮时,radioModel就不会改变,这会导致多个按钮处于活动状态
我用“控制器为”语法切换$ scope并解决了问题,但问题是我在整个项目中使用了$ scope语法而我不希望只有一个控制器将“控制器作为”而其他控制器则有范围。
我的问题是,有没有办法让uib-btn-radio使用$ scope而不是“controller as”?
答案 0 :(得分:2)
如果您不想使用&#39;控制器作为&#39;然后在模型变量中有一个点
ng-model="data.radioModel"
这里有一个很好的解释(第2和第3项) https://www.toptal.com/angular-js/top-18-most-common-angularjs-developer-mistakes
答案 1 :(得分:1)
由ng-repeat
指令实例化的每个模板都会创建自己的子范围,并可以使用$parent
访问ng-repeat
周围的范围。所以快速解决方法是:
ng-model="$parent.radioModel"