Tengo una directiva personalizada en angularjs. Básicamente, lo que quiero que suceda es que el usuario elija un valor de un cuadro de selección y eso agregará un valor a un conjunto. Esto hace que mi directiva personalizada sea invocada y represente un nuevo elemento en la pantalla. Quiero que el campo de texto generado por la directiva se vincule con el atributo del controlador.Uso de ng-model dentro de una directiva
HTML
<device-list ng-repeat="device in devices" key="device.key" display-name="device.display_name" bind-prefix="descriptions"></device-list>
Directiva
angular.module('device_list_tag', []).
directive('deviceList', function() {
return {
restrict: 'E',
require: '?ngModel',
scope: {
devices: '=',
key: '=',
displayName: '=',
bindPrefix: '@'
},
link: function(scope, element, attrs) {
var deviceListElement = $(element)
var containerDiv = $('<div>')
.addClass('row')
var labelTag = $('<label>').text(scope.displayName)
.addClass('span1')
var bindField = attrs.bindPrefix+'.'+scope.key
var textField = $('<input>')
.addClass('span3')
.attr('ng-model', bindField)
containerDiv.append(labelTag)
containerDiv.append(textField)
deviceListElement.append(containerDiv)
}
}
})
controlador
function DevicesCtrl($scope) {
descriptions = {}
}
Parece como si como ng-modelo es local al ámbito de la Directiva, ¿cómo puedo hacer que se aplica a las ¿el padre? Si tengo un montón de campos de texto en la página, como
<input ng-model="descriptions.test"/>
Funciona obras excepto los campos generados por el cuadro de selección.
¿Por qué no simplemente utiliza un atributo de plantilla en la directiva y lo vincula como lo haría normalmente? P.ej.: template: ' ...' ¿No es esto para lo que está la plantilla o te equivoqué? Como el ejemplo en la parte inferior de la página: http://docs.angularjs.org/guide/directive –
El problema es que no sé el nombre del atributo al que voy a vincular desde dentro de la directiva. Intenté usar una plantilla, pero el problema con el que me topé fue cómo hacer que {{some.random.attribute}} funcionara. – Mike
Me gustaría vincular una variable fija y simplemente actualizar la variable con el valor de algunas.tribuciones aleatorias. Descubrí qué es eso. Por ejemplo, podría configurar una función llamada getSomeRandomAttr (clave) que esté conectada al alcance de sus padres o llame a un servidor. Entonces solo necesita actualizar la variable fija después de llamar a la función. –