gpt4 book ai didi

javascript - AngularJS ngModel 在 ui-bootstrap tabset 中不起作用

转载 作者:可可西里 更新时间:2023-11-01 02:34:45 25 4
gpt4 key购买 nike

下面的代码说明了这个问题:

<!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

这会创建两个文本框,一个在标签集内,一个在标签集外。它们都绑定(bind)到 value 范围变量。更新选项卡集中文本框的内容不会更新作用域中的 value 变量。更新选项卡集外的文本框。对任一文本框的更改将导致通过 ngChange 调用 updateValueInScope()

有人可以向我解释为什么会这样吗?是否有某种方法可以“修复”该行为,以便选项卡集中的文本框将修改范围内的模型?

最佳答案

几乎可以肯定的是,问题是您试图绑定(bind)到一个基元(在本例中是一个 float )。像这样的东西应该可以解决它。

$scope.data = {}
$scope.updateValueInScope = function () {
$scope.data.valueInScope = $scope.data.value;
$scope.changes++;
}

基本上在 Angular 中,如果你绑定(bind)到一个基元,变量的值会被传递,而不是对它的引用,这会破坏双向绑定(bind)。我猜 tabset指令创建自己的范围,因此 valueInScope Controller 中定义的变量在 tabset 的子范围内失去了绑定(bind)因为它是原始的。无论如何,不​​要绑定(bind)到原语,它应该可以工作。

这是一个fixed version of plunk

关于javascript - AngularJS ngModel 在 ui-bootstrap tabset 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27513462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com