Oto niewielkie rozszerzenie odpowiedzi @ vidriduch. W tym przypadku używam modelu obiektowego „config” formularza {type:"password", value:"topsecret"}
i wyświetlania go tak:
<input type="{{config.type}}" ng-model="config.value">
Idealnie mogę zmienić obiekt config według potrzeb i korzystać z tego samego elementu wejściowego edytować dowolny config rekord z pasującym typem/wartością.Mój oryginalny sposób przełączania rekordy było nazwać poniżej funkcja zakres:
$scope.newRecord = function (newcfg) {
$scope.config = newcfg;
};
Jednak czasami mam błędy konwersji lub skarg dotyczących walidacji. To jest w Chrome 47. Naprawdę nie lubię przełączać się z tekstu na daty, na przykład. Wygląda na to, że przeglądarka zmieniła wartość przed zmianą typu lub vv.
Rozwiązałem to, zmuszając model (a więc typ) do resetowania pomiędzy zmianami.
$scope.newRecord = function (newcfg) {
$scope.config = {}; //clear the model object
$timeout(function() {
$scope.config = newcfg;
}, 0); //zero delay needed
};
To może nie być idealne rozwiązanie, ale ilustruje to "gotcha", którego mogą doświadczać inni.
Odpowiedź udzielana przez vidriduch powinny być przyjętej odpowiedzi teraz. Jest to możliwe z nowszymi wersjami AngularJS (przynajmniej 1.2.13, może starsze?) – Kabb5