我试图使用AngularJS和Angular-UI-Bootstrap创建一个WebApp,但是由于我对这一切都很新,我需要一些帮助。我使用ng-repeat和一个数组来创建一个Tab界面。
根据第一个标签中的操作,第二个标签会添加到界面中,或者如果它已经打开则应刷新。我已经让Tab工作了,并检查确保它已经打开时再没有添加。
基本结构如下:一个控制器(TabController)用于控制Tab接口,一个控制器(Tab1和Tab2)用于添加到接口的每个Tab。
现在,我遇到以下问题,第二个标签的内容应根据第一个标签中更改的数据而改变。当用户在第一个选项卡中确认数据时,我在TabController中执行一个函数(添加/激活第二个选项卡),该函数也会更改范围中的某些数据。我似乎无法在第二个标签中检测到此数据的变化,我已经为该字段创建了一个监视器,但它只在第一次加载选项卡时触发。如果我使用该字段本身,数据会更改,但手表不会触发。有人知道我怎么能让这个工作?更改的数据应用于更改其他信息,这是我尝试使用手表并执行功能的原因...
我创建了一个Plunker,它应该在一个简单的例子中展示问题是什么以及我想要做什么(我希望...) DEMO
在第一个标签上,有一个按钮可以添加第二个标签(或激活它),例如,我只是增加两个标签上显示的计数。在第二个选项卡上,我在范围上有一个本地字段,我使用$ watch填充全局字段。 第一次启动时,全局计数为1,添加第二个选项卡后,第二个选项卡上的全局计数和本地计数均为2.当我返回第一个选项卡并单击“添加”选项卡时# 39;再次按下按钮,两个标签上的全局计数为3,但第二个标签上的本地计数仍为2,并且手表未被触发。
由于我是Angular(以及网络编程)的新手,我可能会尝试做一些违背所有最佳做法的事情,所以如果某人有更好/不同的方式去做我尝试过的事情要做,随时提出任何建议。
答案 0 :(得分:2)
您的观看表达式不正确,正确的表达式为
$scope.$watch("tabCount",
function() {
$scope.localCount = $scope.tabCount;
})
}
而不是
$scope.$watch($scope.tabCount,
第一个意味着您想要观察在范围内定义的变量tabCount
。