2017-01-10 44 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(); 
} 

這對手機瀏覽器的工作原理也很好互動。