我想观察stateProvider中每个视图中的输入。 我准备了Plunker,它显示了问题所在。 Plunker
我使用这样的$ watch:
$scope.$watch('Group', function(newValues, oldValues) {
console.log(newValues);
}, true);
如果我将数据添加到输入1或输入2,那么$ watch也会观察输入3和4。 但是如果我首先将数据添加到输入3或输入4,则$ watch不会观察这些输入。可能是什么问题?
答案 0 :(得分:1)
您没有为其他州提及controller
。所以它不会工作。
要使用相同的控制器$scope
,您需要在$scope.Group = {};
内创建mainController
。
当您在item1 and 2
中加入价值时,您的plunker会有效,因为$scope.Group
已创建并且您利用了prototypal inheritance.
的好处
当您将值item3 and 4
放入state
时,您的助手无法正常工作,因为没有与您的$scope.Group
相关联的控制器,mainController $scope
上不存在此类{{$$childHead.Group}} - {{$$childTail.Group}}
1}}。
进一步:尝试放
item 3 & 4
在您的Plunker HTML中,看到$('#toggle').on('click', function(){ var v = $('#number').val() || 0; $('#mainview > tbody > tr > th:nth-child('+v+')').toggle(); $('#mainview > tbody > tr > td:nth-child('+v+')').toggle(); });
被创建为子级 范围。
请参阅此working plunker.
答案 1 :(得分:0)
您还必须将ng-controller='mainController'
放入模板中。
您可以将它放在输入标记中,如下所示:
<input ng-controller="mainController" type="text" ng-model="Group.item4" placeholder="Group.item4">