我建议为此使用指令。像往常一样,我尽量避免超时和其他异步操作,而是更喜欢更权威和直接的控制。
directives.directive('boolean', function() {
return {
priority: '50',
require: 'ngModel',
link: function(_, __, ___, ngModel) {
ngModel.$parsers.push(function(value) {
return value == 'true' || value == true;
});
ngModel.$formatters.push(function(value) {
return value && value != 'false' ? 'true' : 'false';
});
}
};
});
优先级是专门设置的,以便在任何其他指令之前完成(通常没有设置优先级,默认为0
)
例如,我将此指令(用于真/假选择)与我的selectpicker
指令一起使用,该指令将我的元素包装select
在selectpicker
引导插件中。
编辑:
这里需要注意的是,我忘记提及的是,您的 html 值必须是字符串值。该指令所做的是在视图和模型之间进行转换,将模型值保存在格式中,boolean
并将视图保存在string
格式中:
%select.selectpicker{ ng: { model: 'modelForm.listed' }, selectpicker: '{ }', boolean: true }
%option{ value: 'true' } Listed
%option{ value: 'false' } Unlisted