AngularJS计算了ng-model

时间:2013-09-25 23:12:11

标签: angularjs

我有以下控制器。

app.controller("testCtrl", function(){

    $scope.utcTime = 1380150771;
    $scope.parseTime = function(t){
      //return local time string
    }
});

在视图中,我有

<input type="text" ng-model="parseTime(utcTime)" />

它不起作用。我可以将ng-model绑定到返回字符串的方法吗? 在输入按钮中显示值的任何替代方法?

4 个答案:

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