2015-04-29 6 views
0

У меня есть базовый ввод, который отображает временную метку в миллисекундах, которая сохраняется в области видимости.изменить значение входного текста с угловым

Однако, я хочу, чтобы он отображал отформатированное время, и я не хочу хранить новую переменную.

Я ищу решение, как это:

ng-model="parseTime(timestamp)" 

И в контроллере:

$scope.parseTime = function(systemTime) { 
    var time = new Date(systemTime);  
    return time.toDateString(); 
}; 
+0

Вы не можете использовать вызов функции, потому что ng-model использует двустороннюю привязку. Поэтому, если вы измените представление, Angular изменит базовую модель соответствующим образом. Боюсь, вам придется использовать переменную области видимости ... или одностороннюю привязку, такую ​​как 'value =" {{parseTime (timestamp)}} "' – devnull69

+0

Спасибо за ответ, но функция не вызывается .. –

+0

Это должно быть (см. Plunker: http://plnkr.co/edit/Z1nWnzv8agGeu4OHQnVy?p=preview). Вы должны принять во внимание, что 'value' входного элемента всегда имеет тип' string', поэтому вы должны сначала «parseInt'» – devnull69

ответ

0

Is это не возможно, Вы можете сделать это с помощью часы

$scope.$watch('timestamp', function(value) { 
    if (value) { 
    var time = new Date(value);  
    $scope.timestamp= time.toDateString(); 
    } 
}); 

html должен быть

ng-model="timestamp" 
+1

Я не уверен, но не создаст ли бесконечный цикл? Вы просматриваете изменения временной метки, а затем вы изменяете временную метку внутри обратного вызова ..., которая вызывает событие изменения для отметки времени и т. Д. – devnull69

+0

@ devnull69 да, вы правы .. это идет к бесконечной петле –

Смежные вопросы