2013-09-25 34 views
0

我有以下控制器。AnglarJS计算ng模型

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

我不相信你可以有ng模型绑定t一个函数,你只是试图将初始值设置为硬编码的utcTime? – JeremyWeir

+0

你究竟想完成什么? –

+0

我需要显示值。我没有任何约束力。此外,当用户设置日期时,我还需要检测值的变化 – lostpacket

回答

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-模型是通过标签和控制器的映射。

首先您可以看到您在输入标签中分配的默认utcTime(1380150771)。

而当您更改输入标签中的文本时,ng-model(utcTime)将在控制器中自动更改。

然后,您键入的每个字母将调用ng-change(parseTime)函数。

您可以通过console.log方法进行检查。

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()要好得多,因为如果你有非常复杂的计算模型,后者会迫使你在手表中包含所有输入变量,这可能是不可能的。

塔里克

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" /> 
0

是的,你可以尝试follwing: 其工作例如:

<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(); 
    } 
});