Come altri hanno menzionato nei commenti, l'associazione dati non "fallirà" di per sé quando l'attributo non è definito nell'oscilloscopio, ma creerà tale attributo sullo scope in modo trasparente.
Se si desidera un comportamento di notifica quando il nome non viene trovato, è possibile ottenerlo manualmente decorando la direttiva ng-model per verificare se il suo valore è definito sull'ambito al momento in cui è stato inserito nel DOM.
.config(['$provide', function($provide) {
$provide.decorator('ngModelDirective', ['$delegate', function($delegate){
var directive = $delegate[0];
// Save the old link function
var link = directive.link;
directive.compile = function() {
return function(scope, element, attrs) {
link.apply(this, arguments);
// Now that we've applied the old link function, we can add
// any extra checks or steps we want
if (!objHasProperty(scope, attrs.ngModel)) {
alert("using ng-model value '" + attrs.ngModel +"' that wasn't defined first!"
}
};
};
return $delegate;
}]);
}])
Questa verifica la presenza di una definizione del valore ng-modello nel campo di applicazione del controller e di allarme se non è impostato.
Vedere un funzionamento jsfiddle di come questo potrebbe registrare un errore di battitura.
Non ho provato questo o pensato a ogni scenario, quindi è possibile che sia davvero rotto da qualche parte ... Sono anche incerto su come si tratterà di trovare attrs che sono definiti nell'ambito del genitore.
Inoltre, vedere this nice blog post per ulteriori informazioni sulle direttive di decorazione.
È necessario assicurarsi che i dati siano validi nel controller – Ven
Desidero sapere se i nomi delle variabili non sono sincronizzati tra la vista e il controller/scope –
come potrebbe accadere? – Ven