gpt4 book ai didi

javascript - 如何在 md-select inside 指令中绑定(bind)到多个

转载 作者:行者123 更新时间:2023-11-27 22:35:07 25 4
gpt4 key购买 nike

尝试创建一个简单的指令,根据是否为作用域上的 model 属性传递数组来显示文本框或下拉列表。

除了在指令标记中显式设置 false 之外的任何内容(例如 multiple="false"),都会导致多选下拉列表。

为什么这不起作用?另外,md-select 值绑定(bind)不起作用(尽管文本框绑定(bind)起作用),我怀疑出于同样的原因。

Plunkr available here illustrating the issue

消费者

<div ng-app='home' layout-padding layout="row">
<content-filter ng-repeat="filter in filters" flex="filter.width" model="filter.model" value="filter.value"></content-filter>
</div>

消费者 Controller

app.controller('MainCtrl', function($scope) 
{
$scope.filters =
[
{
model:
{
multiSelect: false,
items:
[
{
label: 'All',
value: 'all'
},
{
label: 'Fail',
value: 'fail'
},
{
label: 'Success',
value: 'success'
}
]
},
value: 'all',
width: '50%'
},
{
value: '123',
width: '50%'
}
];
});

指令

app.directive('contentFilter', function() 
{
return {
restrict: 'E',
replace: false,
template: '\
<md-input-container flex layout="fill" ng-if="model && model.items.length">\
<md-select ng-model="value" multiple="model.multiSelect === true">\
<md-option ng-repeat="item in model.items" ng-value="{{ item.value }}">{{ item.label }}</md-option>\
</md-select>\
</md-input-container>\
<md-input-container flex layout="fill" ng-if="!model">\
<input type="text" aria-label="{{ label }}" ng-model="value" />\
</md-input-container>',
scope:
{
value: '=',
model: '=?'
}
};
});

最佳答案

这可能不是您正在寻找的答案...

我尝试有条件地将多个属性设置为md-select,但似乎没有任何效果(ng-attr-multipleng-multiple...)。可能这是一个 Angular Material 错误。

因此,作为一种解决方法,您可以根据属性 model.multiSelect 值有条件地添加两个 md-select:一个具有多个属性,另一个不具有多个属性。示例:

<md-input-container flex layout="fill" ng-if="model && !model.multiSelect && model.items.length">\
<md-select ng-model="value">\
<md-option ng-repeat="item in model.items" value="{{ item.value }}">{{ item.label }}</md-option>\
</md-select>\
</md-input-container>\
<md-input-container flex layout="fill" ng-if="model && model.multiSelect && model.items.length">\
<md-select ng-model="[value]" multiple>\
<md-option ng-repeat="item in model.items" value="{{ item.value }}">{{ item.label }}</md-option>\
</md-select>\
</md-input-container>\

重要提示:请记住,如果 md-select 是多个,则绑定(bind)的值需要是一个数组,因此您必须更改 ng-model="value"ng-model="[value]",如您在前面的代码中所见。

I've forked your plunker and you can see a working example here

希望有帮助。无论如何,我会等待其他答案。

关于javascript - 如何在 md-select inside 指令中绑定(bind)到多个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39179869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com