我在AngularJS中定义了一个自定义指令。基本上我想要的是用户从选择框中选择一个值,然后将该值附加到数组中。这会导致调用我的自定义指令并在屏幕上呈现一个新元素。我希望该指令生成的文本字段绑定到控制器的属性。
HTML
HTML
<device-list ng-repeat="device in devices" key="device.key" display-name="device.display_name" bind-prefix="descriptions"></device-list>
指令
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)
}
}
})
控制器
function DevicesCtrl($scope) {
descriptions = {}
}
似乎ng-model只适用于指令的作用域,我该如何使其适用于父级?如果页面上有一堆文本字段,例如:
<input ng-model="descriptions.test"/>
除了由选择框生成的字段之外,它完全有效。
<device-list..
指令的HTML部分发布出来,以便我们了解。 - Rajkamal Subramanian<device-list ng-repeat="device in devices" key="device.key" display-name="device.display_name" bind-attr="descriptions"></device-list>
。 - nrw