angular js ng-hide实时不起作用
angular js ng-hide实时不起作用
如果变量$scope.city为空,则我想要隐藏一段html代码:
{{forecast.data.city.country}} ,{{forecast.data.city.name}}
Forcast for : {{city}}
City@
尽管它们是绑定的,但元素并不实时隐藏,只有当我打开那个页面时,$scope.city变量已经为空时才隐藏。还有一个名为varService的变量,用于在多个控制器之间共享变量。以下是Angular代码:
app.controller('forecastController', ['$scope','varService','$http', function($scope,varService,$http){
$scope.$watch('city', function() {
varService.city = $scope.city;
});
$scope.city = varService.city;
$scope.numOfDays = 2;
$scope.days = 2;
$scope.$watchGroup(['days', 'city'], function() {
$http.get('http://api.openweathermap.org/data/2.5/forecast?q='+$scope.city+'&mode=json&appid=e652a2c384655ea24f5b12d2fb84c60f&cnt='+$scope.days+'&units=metric')
.then(function(data) { $scope.forecast = data; });
});
}]);
那么,我如何使ng-hide在$scope.city变化时实时生效呢?谢谢。
AngularJS中的ng-hide指令用于根据表达式的值来隐藏或显示元素。然而,有时候在实时中使用ng-hide指令时可能会出现不起作用的情况。本篇文章将介绍可能导致这个问题的原因以及解决方法。
问题的原因可能是使用了不正确的条件表达式。在ng-hide指令中,我们需要提供一个条件表达式,该表达式的值决定了元素是否应该被隐藏。如果条件表达式的值为真,则元素将被隐藏。在这种情况下,可能是条件表达式不正确导致了ng-hide指令不起作用。
解决这个问题的方法是确保条件表达式的正确性。在这种情况下,我们可以尝试以下代码:
ng-hide="city == ''"
这个条件表达式检查变量city是否为空字符串。如果city的值为空字符串,则元素将被隐藏。
通过使用这个条件表达式,我们可以解决ng-hide在实时中不起作用的问题。但需要注意的是,确保在使用ng-hide指令时,条件表达式的值能够正确地决定元素的显示与隐藏。
希望本文能够帮助到你解决ng-hide在实时中不起作用的问题。
问题:在实时中,使用ng-hide无法实现功能。
原因:ng-hide指令在元素上添加了display: none样式来隐藏元素。然而,它并没有从DOM中移除元素,仍然占据着空间。因此,在实时中,当使用ng-hide来隐藏元素时,元素仍然存在于DOM中,只是不可见。
解决方法:改用ng-if指令代替ng-hide指令。ng-if指令在条件为true时会在DOM中创建元素,条件为false时会从DOM中移除元素。这样,在实时中,使用ng-if指令可以实现元素的实时隐藏和显示。
以下是修改后的代码示例:
{{forecast.data.city.country}} ,{{forecast.data.city.name}}
Forcast for : {{city}}
或者:
{{forecast.data.city.country}} ,{{forecast.data.city.name}}
Forcast for : {{city}}
通过使用ng-if指令替代ng-hide指令,可以在实时中实现元素的隐藏和显示功能。
问题:ng-hide在实时中不起作用的原因是什么?如何解决这个问题?
原因:ng-hide/ng-show指令期望一个表达式作为参数,而不是一个通过双花括号({{}})进行求值的表达式。因此,在控制器中,已经将city绑定到了$scope对象上,不需要使用双花括号来将其求值为true或false。只需提供表达式,如"city.length===0"即可。
解决方法:将ng-hide指令中的表达式从ng-hide="{{city === ''}}"
修改为ng-hide="city.length===0"
。这样,ng-hide指令将根据city的长度是否为0来决定是否隐藏元素。
完整代码如下:
...
通过以上修改,ng-hide指令将根据city的长度是否为0来实时判断是否隐藏元素。