Ecco una piccola estensione della risposta di @ vidriduch. In questo caso sto usando un modello di oggetti 'config' della forma {type:"password", value:"topsecret"}
, e la visualizzazione in questo modo:
<input type="{{config.type}}" ng-model="config.value">
Idealmente mi potrebbe cambiare l'oggetto di configurazione, come richiesto, e utilizzare lo stesso elemento di input di modificare qualsiasi configurazione registra con il tipo/valore corrispondente.Il mio modo originale di passare record è stato quello di chiamare la funzione seguente campo applicativo:
$scope.newRecord = function (newcfg) {
$scope.config = newcfg;
};
Tuttavia, a volte ottenuto errori di conversione o reclami sulla convalida. Questo è in Chrome 47. Non mi piace davvero passare da un testo all'altro, ad esempio. Il browser sembrava raccogliere il cambiamento di valore prima del cambio di tipo, o vv.
Ho risolto questo costringendo il modello (e quindi il tipo) a ripristinare tra le modifiche.
$scope.newRecord = function (newcfg) {
$scope.config = {}; //clear the model object
$timeout(function() {
$scope.config = newcfg;
}, 0); //zero delay needed
};
Questa potrebbe non essere una soluzione ideale, ma illustra un "trucco" che altri potrebbero provare.
fonte
2016-01-10 22:22:33
La risposta fornita da vidriduch dovrebbe essere la risposta accettata ora. Questo è possibile con le versioni più recenti di AngularJS (almeno 1.2.13, forse più vecchio?) – Kabb5