【发布时间】:2015-02-15 06:51:04
【问题描述】:
以下代码说明了问题:
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<title>AngularJS Plunker</title>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" />
<script src="https://code.angularjs.org/1.3.6/angular.js"></script>
<script src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.12.0.min.js"></script>
<script>
angular.module('plunker', ['ui.bootstrap'])
.controller('MainCtrl', function($scope) {
$scope.changes = 0;
$scope.updateValueInScope = function () {
$scope.valueInScope = $scope.value;
$scope.changes++;
}
});
</script>
</head>
<body ng-controller="MainCtrl">
<tabset>
<tab heading="Tab A">
<div class="panel">
<input type="text" ng-model="value" ng-change="updateValueInScope()" />
<br />
<tt>value: {{value}}</tt><br />
<tt>valueInScope: {{valueInScope}}</tt><br />
<tt>changes: {{changes}}</tt>
</div>
</tab>
</tabset>
<input type="text" ng-model="value" ng-change="updateValueInScope()" />
<br />
<tt>value: {{value}}</tt><br />
<tt>valueInScope: {{valueInScope}}</tt><br />
<tt>changes: {{changes}}</tt>
</body>
</html>
在这里打个招呼:
http://plnkr.co/edit/dJc009csXVHc7PLSyCf4?p=preview
这将创建两个文本框,一个在标签集内,一个在标签集外。它们都绑定到value 范围变量。更新选项卡集中文本框的内容不会更新范围内的value 变量。更新标签集外的文本框。对任一文本框的更改将导致通过 ngChange 调用 updateValueInScope()。
有人可以向我解释为什么会这样吗?是否有某种方法可以“修复”该行为,以便选项卡集中的文本框将修改范围内的模型?
【问题讨论】:
-
没有 angualar-ui 注入也能正常工作。也许是 angular-ui 中的错误?
-
我同意。没有angular-ui它工作正常,因此我很困惑。此外,它非常接近 ngModel 文档中给出的示例:link。即便如此,reptilicus 的回答为我解决了这个问题,所以我将其标记为已接受的答案。
标签: javascript angularjs twitter-bootstrap angular-ui-bootstrap