在我的控制器中,我有$scope.var=[]
当我点击一个按钮时,这个数组充满了内容。
所以$scope.var.length
正在从0变为1。
当数组被填充时,我想显示一个div,所以它有一个
ng-if="condition".
此条件也保存在控制器中:
$scope.controller = false.
现在我希望在数组填满时改变这个条件:
$scope.$watch('var.length', function(){$scope.condition = true;});
现在(重要!),有第二个显示div的选项:带
的按钮ng-click="condition = !condition"
在测试中,ng-click工作正常,条件在true和false之间变化,但是当我用内容填充var = []时,$ watch-method不起作用。 感谢您的帮助和tipps:)
//修改 HTML:
<div class="row">
<div ng-click="condition= !condition">
<span class="glyphicon clickable" ng-class="{'glyphicon-down': !condition, 'glyphicon-up': condition}" ></span>
</div>
<div class="slideToggle" ng-if="condition">
Text hier
</div>
</div>
答案 0 :(得分:0)
你可以只看var而不是var.length
请查看此示例:http://jsfiddle.net/Lzgts/577/
代码 -
$scope.$watch('var', function(newVal, oldVal){
console.log(newVal);
if(newVal.length > 0 ){
$scope.condition = true;
}else{
$scope.condition = false;
}
});
这应该适合你。
或者,您可以观察var.length,但仍然需要一些if / else逻辑来检查newVal是否实际为0。像这样:
$scope.$watch('var.length', function(newVal, oldVal){
if(newVal === 0){
$scope.condition = false;
} else {
$scope.condition = true;
}
});
答案 1 :(得分:0)
这样的代码可能会导致一些问题
你可以检查我的代码:
plnkr
$scope.$watch('var.length', function(newE) {
if (newE > 0) {
$scope.condition = true;
}
});
$timeout
的范围,所以要注意不要陷入$apply
循环。答案 2 :(得分:0)
好的,我做到了:
更改ng-click="condition = !condition"
到ng-click="reverse()"
并在控制器中定义函数:
$scope.reverse= function(){
$scope.condition= !$scope.condition;
};
然后条件也在变化,因为它现在处于同一范围内。