为什么这个ng-click适用于某个函数,但不适用于这些值?

时间:2017-08-09 14:43:26

标签: javascript angularjs twitter-bootstrap dropdown

我有以下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 
}

1 个答案:

答案 0 :(得分:4)

因为*const u16创建新范围而ng-repeate超出范围。所以如果你使用myValue语法,它可以正常工作。

&#13;
&#13;
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;
&#13;
&#13;