AngularJS 在单击事件时更新字段
AngularJS updating fields on click event
我有一个快速的问题,我想通过以下实现:
我希望 {{gender}}
具有未定义的默认值或其他值。
一旦用户点击男性或女性,我想隐藏父级 ul
并显示 selectedGender <li>
并在完成后更新 {{gender}}
字段。但是,当用户单击 selectedGender <li>
时,我想反转所有内容并将 {{gender}}
设置为未定义(默认值)。
<ul class="col">
<li class="two" ng-click="selectedGender = true">Male</li>
<li class="two" ng-click="selectedGender = true">Female</li>
</ul>
<li ng-show="selectedGender" ng-click="">{{gender}}</li>
谢谢!
ng-click属性可以指定一个函数在控制器范围内调用,然后可以修改你需要的值。
$scope.selectGender = 函数(){ $scope.selectedGender = true; }
$scope.unselectGender = function() { $scope.selectedGender = null; }
<.. ng-click="selectGender()" .. />
您可以这样做:
<ul class="col" ng-show="selectedGender == false">
<li class="two" ng-click="selectedGender = 'male'">Male</li>
<li class="two" ng-click="selectedGender = 'female'">Female</li>
</ul>
<li ng-show="!!selectedGender" ng-click="selectedGender = false">{{selectedGender}}</li>
当然,用好的函数包装一切会更好。
<ul class="col" ng-show="currentGender == false">
<li class="two" ng-click="selectGender('male')">Male</li>
<li class="two" ng-click="selectGender('female')">Female</li>
</ul>
<li ng-show="!!currentGender" ng-click="selectGender(false)">{{currentGender}}</li>
然后,在你的 $scope 中有一个函数 selectGender:
$scope.selectGender = function(gender){
$scope.currentGender = gender;
}
在 javascript 中,!!
用作 boolean
的转换。第一个 !
将对象转换为 boolean
,第二个验证条件。
Jsfiddle here
我想出的答案不是很枯燥,但很管用。所以你可能想根据你的需要修改它。我基本上将男性和女性放入复选框中,这样它们就会 return 一个真值或假值。我用那个模型来比较他们是否是某种性别,并将其用作显示的内容。对于点击性别本身,我将所有值删除为默认 null。希望有所帮助。
这是一支工作笔
http://codepen.io/ddavisgraphics/pen/raWZGd
这是我用来提出解决方案的 API 文档 https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D
HTML
<body ng-app="app">
<ul ng-controller="GenderCtrl">
<li> Whats your Gender
<ul class="col">
<li class="two">
<input type="checkbox" ng-model="maleValue" ng-click="userGender()" value="male"/>
Male
</li>
<li class="two">
<input type="checkbox" ng-model="femaleValue" ng-click="userGender()" value="female"/>
Female
</li>
</ul> </li>
<li ng-click="removeGender()" ng-Show="selectedGender"> Your current {{gender}} </li>
</ul>
</body>
JS
var app = angular.module('app', []);
app.controller("GenderCtrl", function ($scope) {
$scope.gender = ""; // Leave it undefined but set the variable
$scope.maleValue = null;
$scope.femaleValue = null;
$scope.selectedGender = false;
$scope.userGender = function(){
$scope.selectedGender = true;
if($scope.maleValue === true) {
$scope.gender = "Male";
console.log('testing male');
} else if ($scope.femaleValue === true) {
$scope.gender = "Female";
console.log('testing female');
} else {
$scope.gender = null;
$scope.selectedGender = false;
}
}
$scope.removeGender = function(){
$scope.gender = null;
$scope.maleValue = null;
$scope.femaleValue = null;
}
});
我有一个快速的问题,我想通过以下实现:
我希望 {{gender}}
具有未定义的默认值或其他值。
一旦用户点击男性或女性,我想隐藏父级 ul
并显示 selectedGender <li>
并在完成后更新 {{gender}}
字段。但是,当用户单击 selectedGender <li>
时,我想反转所有内容并将 {{gender}}
设置为未定义(默认值)。
<ul class="col">
<li class="two" ng-click="selectedGender = true">Male</li>
<li class="two" ng-click="selectedGender = true">Female</li>
</ul>
<li ng-show="selectedGender" ng-click="">{{gender}}</li>
谢谢!
ng-click属性可以指定一个函数在控制器范围内调用,然后可以修改你需要的值。
$scope.selectGender = 函数(){ $scope.selectedGender = true; } $scope.unselectGender = function() { $scope.selectedGender = null; }
<.. ng-click="selectGender()" .. />
您可以这样做:
<ul class="col" ng-show="selectedGender == false">
<li class="two" ng-click="selectedGender = 'male'">Male</li>
<li class="two" ng-click="selectedGender = 'female'">Female</li>
</ul>
<li ng-show="!!selectedGender" ng-click="selectedGender = false">{{selectedGender}}</li>
当然,用好的函数包装一切会更好。
<ul class="col" ng-show="currentGender == false">
<li class="two" ng-click="selectGender('male')">Male</li>
<li class="two" ng-click="selectGender('female')">Female</li>
</ul>
<li ng-show="!!currentGender" ng-click="selectGender(false)">{{currentGender}}</li>
然后,在你的 $scope 中有一个函数 selectGender:
$scope.selectGender = function(gender){
$scope.currentGender = gender;
}
在 javascript 中,!!
用作 boolean
的转换。第一个 !
将对象转换为 boolean
,第二个验证条件。
Jsfiddle here
我想出的答案不是很枯燥,但很管用。所以你可能想根据你的需要修改它。我基本上将男性和女性放入复选框中,这样它们就会 return 一个真值或假值。我用那个模型来比较他们是否是某种性别,并将其用作显示的内容。对于点击性别本身,我将所有值删除为默认 null。希望有所帮助。
这是一支工作笔 http://codepen.io/ddavisgraphics/pen/raWZGd
这是我用来提出解决方案的 API 文档 https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D
HTML
<body ng-app="app">
<ul ng-controller="GenderCtrl">
<li> Whats your Gender
<ul class="col">
<li class="two">
<input type="checkbox" ng-model="maleValue" ng-click="userGender()" value="male"/>
Male
</li>
<li class="two">
<input type="checkbox" ng-model="femaleValue" ng-click="userGender()" value="female"/>
Female
</li>
</ul> </li>
<li ng-click="removeGender()" ng-Show="selectedGender"> Your current {{gender}} </li>
</ul>
</body>
JS
var app = angular.module('app', []);
app.controller("GenderCtrl", function ($scope) {
$scope.gender = ""; // Leave it undefined but set the variable
$scope.maleValue = null;
$scope.femaleValue = null;
$scope.selectedGender = false;
$scope.userGender = function(){
$scope.selectedGender = true;
if($scope.maleValue === true) {
$scope.gender = "Male";
console.log('testing male');
} else if ($scope.femaleValue === true) {
$scope.gender = "Female";
console.log('testing female');
} else {
$scope.gender = null;
$scope.selectedGender = false;
}
}
$scope.removeGender = function(){
$scope.gender = null;
$scope.maleValue = null;
$scope.femaleValue = null;
}
});