AngularJS 条件 ngStyle 未应用
AngularJS 条件 ngStyle 未应用
我正在尝试使用AngularJS作用域变量来使输入框的宽度响应,通过使用ng-style有条件地设置它的宽度。我已经成功地在text-align上实现了这一点,但是出于某种原因在width上却没有成功...
HTML代码:
JS代码:
var vfApp = angular.module('vfApp', []); vfApp.directive('resize', function () { return function ($scope) { $scope.doResize = false; }; });
编辑:
这与建议的可能重复问题不同,因为我不是尝试应用静态的CSS类,而是尝试使用变量有条件地应用内联样式。
问题的原因是在js文件中doResize的值为false,解决方法有两种:将$scope.doResize的值改为true,或者将ternary expression改为doResize ? '10%' : '100%'。
文章如下:
如果你的目标是100%的宽度,问题很简单,就是ternary expression(三元表达式):
doResize ? '100%' : '10%'.
在你的js文件中,doResize的值是false。如果你不理解ternary expression,它们是一种压缩的if语句。你的代码的非压缩形式是:
if(doResize) {
return '100%';
} else {
return '10%';
}
所以你有两种解决方法:
1. 将$scope.doResize的值改为true;
2. 将ternary expression改为doResize ? '10%' : '100%'。
希望能帮到你。
我理解doResize的值是false,我在实现代码之前对我的整体代码进行了压缩以解决这个问题。另外,问题不是我没有得到100%的宽度,也不是我没有得到10%的宽度。非常感谢你的时间!
对不起,我误解了。
请不要抱歉,可能我没有解释得足够清楚!非常感谢你的时间。
问题的出现的原因是在使用AngularJS 1.0.1版本时,ng-style指令在应用条件时存在问题。在给定的示例中,ng-style指令用于设置输入框的宽度,根据条件doResize的值来决定宽度为100%还是10%。然而,使用doResize && {'width':'100%'} || {'width':'10%'}的方式在该版本中不起作用。
解决方法是使用ng-style指令中的三元表达式来替代条件语句。将ng-style的值设置为doResize ? {'width':'100%'} : {'width':'10%'},这样就可以根据doResize的值来动态设置宽度。
以下是修正后的示例代码:
isMobile value: {{doResize}}
修正后的代码将根据doResize的值来设置输入框的宽度,当doResize为true时,宽度为100%,否则宽度为10%。这样就能正确地根据条件来应用样式。
希望以上解决方法对您有帮助,谢谢!