2017-01-10 42 views
0

我在我的应用程序设置默认时间引起angularjs

<input type="time" name="time" ng-model="time" 
min="09:00:00" max="22:00:00" ng-change="yesorno()" required /> 
... some other HTML data 
{{time | date: "h:mm a"}} 

已经一段时间输入框在我的控制器绑定的问题我有

$scope.yesorno = function() { 
    $scope.time // get data and set true or false to other values 
}; 

这整个事情工作正常,数据变化我改变了文本框中的时间。

但是,我需要为输入框设置一个默认值,并且通过搜索,我发现了这个方法。

$scope.time = new Date (new Date().toDateString() + ' ' + '<?php echo isset($_GET['time']) ? $_GET['time'] : '10:00'; ?>'); 

它成功地让我在输入框中的默认值,但所有的突然,{{time | date: "h:mm a"}}当我改变的时候输入框变为空白,并$scope.time在控制台日志中是不明确的。

我需要一些建议,如何设置默认时间,同时仍然保留数据绑定。

回答

0

为什么不在控制器上制作一个功能让你恢复时间?如果没有一个在你输入“设置”,还给默认时间:

function retrieveTime() { 
    return $scope.time || new Date(//Your Time/Date); 
} 

然后你的模板变为:

{{ retrieveTime() | date: "h:mm a" }} 
0

我发现了一个解决方案。

<input type="time" name="time" id="timei" value="<?php echo isset($_GET['time']) ? $_GET['time'] : '10:00'; ?>" 
     min="09:00:00" max="22:00:00" onchange="bindTime()" required /> 

我不绑定我的时间输入框与angularjs。相反,我把它当作一个普通的HTML5时间框,我可以使用value属性设置默认时间。然后我用onchange属性来调用一个函数我的控制器之外与范围

function bindTime() { 
    var scope = angular.element(document.getElementById('appwrap')).scope(); 
    scope.time = new Date (new Date().toDateString() + ' ' + document.getElementById('timei').value); 
    scope.$apply(); 
} 

这对手机浏览器的工作原理也很好互动。