javascript – 如果在uib-tabset中使用,则值不与作用域的变量绑定

如果在 uib-tabset内使用,则值不与范围的变量绑定.
在下面的示例中,我尝试在uib-tab内部及其外部获取$scope.message:
angular.module("app",["ui.bootstrap"])
		.controller("myctrlr",["$scope",function($scope){
            $scope.message = "my message ";
		}]);
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-bootstrap/0.14.3/ui-bootstrap-tpls.min.js"></script>
<div ng-app="app" ng-controller="myctrlr" class="col-md-6 col-md-offset-3">
	<uib-tabset>
	    <uib-tab heading="Static title">
            <input type="text" ng-model="message" ng-change="change()" /> 
            <br />
            Inside uib-tab : {{ message }}
	  	</uib-tab>
	    <uib-tab heading="Another title">
	      I've got an HTML heading,and a select callback. Pretty cool!
	    </uib-tab>
  	</uib-tabset>
    Outside uib-tab : {{ message }}
</div>

我声明了$scope.message并尝试将其与uib-tab中的input元素绑定.但是当我更改它的值时,更改不会反映在uib-tab之外.

jsfiddle link

解决方法

基本上以角度为单位,如果你绑定到一个原语,则传递变量的值,而不是对它的引用,这可能会破坏双向绑定.我猜测tabset指令创建了自己的作用域,因此控制器中定义的valueInScope变量在tabset的子作用域中丢失了它的绑定,因为它是一个原语.
$scope.data = {message:'my message'}

Solution by Object

您也可以使用$parent.parentproperty绑定子范围.这将阻止子范围创建自己的属性.

Solution by using $parent

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


js中event的用法
js中能调用python吗
js中split的用法
js怎么设置边框样式
js中截取字符串的方法
js中innerhtml的用法
javascript的成熟分类方式有哪些
js中document是什么意思
js怎样让div中的文字居中
js中怎样定义一个对象
javascript的成熟分类介绍
js中parseint什么意思
js中字符串如何排序
void在js中是什么意思
js中如何定义函数
js中arguments是什么意思
js中什么是同步和异步
js中如何sleep一秒
js中ui函数是什么意思
js中如何遍历数组