2013-09-25 46 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(); 
    } 
});