我有以下控制器。
app.controller("testCtrl", function(){
$scope.utcTime = 1380150771;
$scope.parseTime = function(t){
//return local time string
}
});
在视图中,我有
<input type="text" ng-model="parseTime(utcTime)" />
它不起作用。我可以将ng-model绑定到返回字符串的方法吗? 在输入按钮中显示值的任何替代方法?
答案 0 :(得分:0)
您可以使用ngChange和ngModel
JS
$scope.utcTime = 1380150771;
$scope.parseTime = function(){
console.log($scope.utcTime);
//return local time string
}
HTML
<input type="text" ng-change="parseTime()" ng-model="utcTime" />
ng-model正在通过标签和控制器进行映射。
首先,您可以看到在输入标签中指定的默认utcTime(1380150771)。
当你更改输入标签中的文字时,ng-model(utcTime)将在控制器中自动更改。
然后您键入的每个字母都将调用ng-change(parseTime)函数。
您可以通过console.log方法进行检查。
答案 1 :(得分:0)
我的解决方案基于以下来源:
https://groups.google.com/forum/#!topic/angular/1mnra0vamtg
我编辑了Plunker示例代码,使用ng-value
使用计算功能生成和更新ng-model
。请参阅以下链接:
http://plnkr.co/edit/Fmqw0wp37Ndk1yuWvFkV?p=preview
此外,上面的示例显示了如何使用自定义过滤器格式化显示结果。
在其他帖子中,有些人建议使用$watch()
检测输入变量的更改并相应地更新ng-model
变量。使用ng-value
比使用$watch()
好得多,因为后者会强制您在监视中包含所有输入变量,如果您的计算模型非常复杂,则可能无法实现。
塔雷克
答案 2 :(得分:0)
尝试这样做
app.controller("testCtrl", function(){
$scope.utcTime = 1380150771;
$scope.result= $scope.parseTime( $scope.utcTime)
$scope.parseTime = function(t){
//return local time string
}
});
HTML
<input type="text" ng-model="result" />
答案 3 :(得分:0)
是的,您可以尝试以下方式: 其工作实例:
<input type="text" ng-model="parseTime(utcTime)" />
app.controller("testCtrl", function(){
$scope.utcTime = 1380150771;
$scope.parseTime = function(t){
//return local time string
new Date(t).toISOString();
}
});