我有一个带有以下html的Angular Dart组件:
编辑:由于某些原因,我的某些HTML没有正确复制。在标签标签之外我有:<div class="btn-group btn-group-vertical" data-toggle="buttons">
`
<label ng-repeat="item in items" class="btn btn-primary btn-sm btn-block" ng-show="isItemVisible(item)">
<input type="radio" name="options" value="{{item}}" ng-model="selected">{{item}}
<span class="badge pull-right"><span class="glyphicon glyphicon-ok"></span></span>
</label>
</div>`
但是,这永远不会更新模型。我也尝试过使用onclick,ng-click和ng-change,结果相同 - 函数永远不会被调用。是否有一些指令我使用不正确?
答案 0 :(得分:4)
在ng-click
中使用Future,这样可以让您的模型得到更新。
<input type="radio" name="options" value="{{item}}"
ng-model="selected" ng-click="radioButtonClicked();">{{item}}</input>
//Component Code:
void radioButtonClicked(){
new Future((){
//Use your selected model here.
});
}
答案 1 :(得分:1)
$ parent应该做的伎俩。这是一个有效的例子:
<强> HTML 强>
<div>
<div ng-repeat="item in items">
<label for="{{item.name}}">{{item.name}}:</label>
<input id="{{item.name}}" type="radio" ng-model="$parent.$parent.selected" ng-value="item.value" />
</div>
<strong>Selected value:</strong> {{$parent.selected}} <br/>
</div>
<强>控制器强>
$scope.items = [{
name:'Item1',
value: 'value1'
}, {
name:'Item2',
value: 'value2'
}, {
name:'Item3',
value: 'value3'
}];
$scope.selected = null;