Ho una direttiva all'interno di un ripetitore ng che dovrebbe impostare una proprietà scope. Si prega di consultare il violino qui: http://jsfiddle.net/paos/CSbRB/Come impostare il valore della proprietà dell'oggetto del controller angolare dalla direttiva nello scope figlio
Il problema è che la proprietà campo di applicazione è dato come un valore di attributo come questo:
<button ng-update1="inputdata.title">click me</button>
La direttiva dovrebbe impostare la proprietà ambito inputdata.title a qualche stringa . Questo non funziona:
app.directive('ngUpdate1', function() {
return function(scope, element, attrs) {
element.bind('click', function() {
scope.$apply(function() {
scope[ attrs.ngUpdate1 ] = "Button 1";
});
});
};
});
Tuttavia, assegnando direttamente funziona:
scope["inputdata"]["title"] = "Button 1";
Può cortesemente dirmi come posso impostare una proprietà ambito con. notazione nel suo nome da una direttiva?
PS: Il motivo per cui il violino sta utilizzando un ripetitore è perché rende le direttive in ambito figlio. Quando si trovano in un ambito figlio, non è possibile scrivere sulle proprietà dell'ambito che sono primitive. Ecco perché ho bisogno di una proprietà dell'oggetto con "." nel nome. Vedere la lunga spiegazione qui: What are the nuances of scope prototypal/prototypical inheritance in AngularJS?
Grazie
Una soluzione poco elegante sarebbe quella di utilizzare la forma di stringa di '$ apply', ad esempio:.' Ambito $ applicare (attrs.ngUpdate1 + '=' + '"Button 1"'); '. –
@Josh, nel caso in cui non hai visto la mia risposta, l'elegante soluzione è usare '$ parse'. –