我有以下html:
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
{{myValue}}
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li ng-repeat="value in valueList">
<button class="btn btn-link" ng-click="myValue = value.key">
{{value.key}}
</button>
</li>
</ul>
</div>
在控制器中:
$scope.valueList = [ { key: "A" }, { key: "B" } ];
$scope.myValue = $scope.valueList[0].key;
这将返回一个以“A”开头的下拉菜单,其中包含“A”&amp; “B”是选择。
现在,当单击下拉按钮时,上面的html不会将myValue变为“B”。但是,当我将ng-click更改为ng-click="changeValue(value.key)"
时,它确实按预期工作。为什么myValue = value.key
在{{ value.key }}
显示正确的内容时什么都不做?
完整性功能:
$scope changeValue = function(valueKey) {
$scope.myValue = valueKey
}
答案 0 :(得分:4)
因为*const u16
创建新范围而ng-repeate
超出范围。所以如果你使用myValue
语法,它可以正常工作。
controllerAs
&#13;
var app = angular.module('myApp', []);
app.controller('AppCtrl', function($scope) {
var vm = this;
vm.valueList = [{
key: "A"
}, {
key: "B"
}];
vm.myValue = vm.valueList[0].key;
});
&#13;