我试图隐藏/显示基于Controller布尔变量的表单的一部分。这是我的HTML代码:
<div id="sheetform-container" ng-controller="SheetController as SheetCtrl">
<form action="#">
<div class="sheetform-row" ng-show="canShow('Price')">
<div class="sheetform-left-col fl-left"><label for="sheetform-price">Price</label></div>
<div class="sheetform-midlle-col fl-left"><input type="text" class="sheetform-input" id="sheetform-price" name="price" value="$ 0.00" /></div>
<div class="sheetform-right-col fl-right"></div>
</div>
</form>
</div>
我创建了一个函数,根据发送的值将Price属性更改为true / false,称为setConfig。这就是Controller代码的样子:
ngApp.controller('SheetController', ['$scope', function($scope) {
$scope.Price = true;
$scope.canShow = function(field) {
return $scope.Price;
}
$scope.setConfig = function(config) {
$scope.Price = config.Price;
}
}]);
知道我错过了什么吗?
谢谢!
答案 0 :(得分:3)
如果您打算将价格作为某物的实际价格,那么在这种情况下您不应该将其用于布尔值。使用ng-model
分配价格。另外,不要使用大写字母来命名变量。只有课程应该大写。
<div id="sheetform-container" ng-controller="SheetController as SheetCtrl">
<form action="#">
<div class="sheetform-row" ng-show="showPrice">
<div class="sheetform-left-col fl-left"><label for="sheetform-price">Price</label></div>
<div class="sheetform-midlle-col fl-left"><input type="text" class="sheetform-input" id="sheetform-price" name="price" ng-model="price" /></div>
<div class="sheetform-right-col fl-right"></div>
</div>
</form>
</div>
然后在您的控制器中,您可以删除您拥有的功能并初始化变量
ngApp.controller('SheetController', ['$scope', function($scope) {
$scope.showPrice = true;
$scope.price = null;
}]);
我不确定你是如何确定是否应该显示价格但是你可以将$ scope.showPrice分配给一个属性,无论该形式用于什么对象,或者如果它是一个切换,那么你可以说:
<a href ng-click="showPrice = !showPrice"></a>
答案 1 :(得分:1)
<div class="sheetform-row" ng-show="canShow('Price')">
canShow()函数需要一个布尔值,以便ng-show可以相应地改变输出。
'Price'被视为字符串'Price'而不是控制器中的布尔值。
因此将其更改为ng-show="canShow(Price)"
,此处Price的值为true / false,这将有助于ng-show隐藏/显示正确。
setConfig现在也没有影响价格。
让我知道它是否有助于您或您需要进一步的帮助。
答案 2 :(得分:0)