0
我創建了一個指令,允許用戶將值(性別:男性或女性)作爲註冊表單的一部分進行切換。切換到輸入元素的文本值在切換時會在視圖內更新,但在提交表單時,ng-model
值未定義。Ng-model的值未定義於指令元素
我敢肯定,這與通過指令生成的元素在視圖加載後注入到DOM中的事實有關。在jQuery中,您只需在定義事件類型之後定位元素,這可以解決問題,但我不確定如何在Angular中解決問題。
.directive('gendertoggle', function() {
return {
restrict: 'E',
template: '<input type="button" value="Male" ng-model="user.gender"></input>',
link: function($scope, elem, attrs) {
elem.bind("click", function() {
if (elem[0].childNodes[0].value == "Male") {
elem[0].childNodes[0].value = "Female";
$scope.gender = 'Female';
console.log($scope.gender);
} else {
elem[0].childNodes[0].value = "Male";
$scope.gender = 'Male';
console.log($scope.gender);
}
})
}
}
});
.controller('RegisterCtrl', function($scope, $ionicHistory, $state, $rootScope, $localstorage, AuthenticationService AUTH_PROVIDER) {
$scope.RegisterUser = function(user){
var email = user.email.toLowerCase();
var firstname = user.firstname;
var lastname = user.lastname;
var password = user.password;
var gender = user.gender;
console.log(gender); //This is undefined
}
})
<input type="text" name="firstname" ng-model="user.firstname">
<input type="text"name="lastname" ng-model="user.lastname">
<input type="email" name="email" ng-model="user.email" required>
<input name="password" type="password" ng-model="user.password">
<gendertoggle></gendertoggle>
<button nav-clear ng-click="RegisterUser(user)">
Register
</button>