2017-05-04 109 views
0

我有一個要求,即使用在同一表單上選擇用戶配置文件所確定的時區偏移來顯示時間輸入字段。動態更改ng-model-options屬性

我定義的範圍getTzOffset FN在鏈接功能,這樣我可以在這樣的NG-模型的選擇使用它:

<input ng-model="myTimeObject" type="time" ... ng-model-options="{timezone: getTzOffset()}" ... >

但是,這並不工作。 getTzOffset永遠不會被調用。

我正在使用帶輸入字段的日期選擇器,它需要一個時區。我不需要修改的日期對象或字符串表示形式,我需要timezone-offset,以便datepicker可以知道如何將日期對象正確轉換爲UTC時間。當通過界面選擇不同的用戶時,我需要更改時區。

有什麼辦法可以動態地改變一個ng-model-options屬性嗎?

+0

你是否已經嘗試設置一個範圍的變量而不是函數?那裏有任何改變? –

+0

是的,試過了。在鏈接函數的頂部使用偏移字符串設置作用域var。根本不起作用。只是默認爲瀏覽器的設置。它必須是模板中的硬編碼字符串,或者它不需要。 ng-model-options似乎不是一個真正的角度表達式(與文檔相反)。 – Faust

+0

我已經辭去重新編譯目標代碼並重新插入到dom中。我有這個工作,但這不是我想要的簡單解決方案。 – Faust

回答

0

您可以使用角度日期過濾選項:時區。

Sample Plunker

這個想法是使用日期過濾器的第三個參數,並通過變量來改變它。

{{ inputTime | date: "HH:mm:ss": tzInput }} 

你也可以使用$過濾器來生成代碼中的值,並將其存儲,如:

$scope.inputTime = $filter('date')($scope.inputTime , "HH:mm:ss", $scope.tzInput); 
+0

我的模型是日期時間對象,而不是字符串。爲了清晰起見,我添加了一些更多的html。 – Faust

+0

角度日期過濾器對Date對象也有效...... – dev8080

+0

但它返回一個字符串。我使用帶輸入字段的日期選擇器,它需要一個時區。我不需要修改日期對象或它的字符串表示,我需要時區,以便datepicker可以知道如何操作日期對象。 (澄清我的問題) – Faust