Javascript 具有现代化值的角度表达式?
如果新的输入类型不支持HTML5本机浏览器,我想显示不同的控件 我希望做这样的事情:Javascript 具有现代化值的角度表达式?,javascript,angularjs,modernizr,Javascript,Angularjs,Modernizr,如果新的输入类型不支持HTML5本机浏览器,我想显示不同的控件 我希望做这样的事情: <p ng-show="{{Modernizr.inputtypes.datetime-local}}">Modernizr says datetime-local is supported!</p> modernizer表示支持datetime local 但是,Modernizer似乎不适用于角度表达式 是将我感兴趣的所有Modernizer值在启动时放在rootscope上,
<p ng-show="{{Modernizr.inputtypes.datetime-local}}">Modernizr says datetime-local is supported!</p>
modernizer表示支持datetime local
但是,Modernizer似乎不适用于角度表达式
是将我感兴趣的所有Modernizer值在启动时放在rootscope上,以便在表达式中使用,还是有更好的方法?您可以将所有Modernizer值放在rootscope上,这样就可以了(请注意,
ng show
中的modernizer.inputtypes.datetimeLocal
应该是modernizer.inputtypes.datetimeLocal
)
但我的首选是使用常量()
使其可注入,并仅在作用域上公开所需的属性,这样视图就不会耦合到Modernizer
app.constant("Modernizr", Modernizr);
app.controller("controller", function ($scope, Modernizr) {
$scope.browser = {
supportsDateimeLocalInput: Modernizr.inputtypes.datetimeLocal,
supportsEmailInput: Modernizr.inputtypes.email
};
});
在我看来
<p ng-show="browser.supportsDatetimeLocalInput">
Modernizr says datetime-local is supported!
</p>
Modernizer表示支持datetime local!
首先确保您的项目中包含Modernizr。我创建了一个简单的提供程序,允许Modernizr注入到我们的指令中,而不是全局访问。我们使用Modernizr来检测我们以后是否在指令中使用触摸设备。
angular.module('fast-click')。provider('modernizer',function(){
"严格使用",;
此。$get=函数(){
回归现代化| |{};
};
});
接下来,让我们定义快速单击指令
angular.module('fast-click')。指令('fastClick',函数($parse,modernizer){
"严格使用",;
返回{
限制:“A”,
链接:函数(范围、元素、属性){
}
};
});
您会注意到,我们在快速单击指令中注入了两个依赖项。第一个是$parse
,它转换角度
将传递给指令的表达式传递到函数中-此
代码段取自随Angular提供的ng click
指令,
我们将其包装在自己的功能中,以保持干燥
clickFunction=函数(事件){
//如果某个原因导致此处理程序
//取消让我们阻止执行
如果(!取消){
作用域:$apply(函数(){
fn(作用域,{$event:event});
});
}
};
在全球范围内访问它是否有缺点?如何在Angular 4应用程序中使用Modernizer?
<p ng-show="browser.supportsDatetimeLocalInput">
Modernizr says datetime-local is supported!
</p>