具有Modernizr值的角度表达式?

Joh*_*hnC 13 javascript modernizr angularjs

如果没有针对新输入类型的html 5本机浏览器支持,我想显示不同的控件.

我希望做这样的事情:

 <p ng-show="{{Modernizr.inputtypes.datetime-local}}">Modernizr says datetime-local is supported!</p>
Run Code Online (Sandbox Code Playgroud)

然而,似乎Modernizr不适用于Angular表达式.

是这样的方法将我感兴趣的所有Modernizr值放在启动时的根镜上,这样它们可以用在表达式中还是有更好的方法?

Ant*_*Chu 22

你可以把所有的Modernizr对rootScope,它会工作(注意,Modernizr.inputtypes.datetime-localng-showModernizr.inputtypes.datetimeLocal)...

app.run(function ($rootScope) {
    $rootScope.Modernizr = Modernizr;    
});
Run Code Online (Sandbox Code Playgroud)

但我的偏好是使用它进行注入constant(),并在范围上公开所需的属性,以便视图不与Modernizr耦合......

app.constant("Modernizr", Modernizr);

app.controller("controller", function ($scope, Modernizr) {
    $scope.browser = {
        supportsDateimeLocalInput: Modernizr.inputtypes.datetimeLocal,
        supportsEmailInput: Modernizr.inputtypes.email
    };    
});
Run Code Online (Sandbox Code Playgroud)

在视图中......

<p ng-show="browser.supportsDatetimeLocalInput">
    Modernizr says datetime-local is supported!
</p>
Run Code Online (Sandbox Code Playgroud)

的jsfiddle