2015-12-28 49 views
0

是否有Angular過濾數據在textbox中顯示?在插入文本框之前過濾ng-model

我必須要顯示的日期數據textbox,目前我提出一個新的變量,並使用moment js格式,並且我必須寫$scope.$watch()在第一變量來反映過來other.In改變這個例子似乎OK ,但是當我把它應用到我的項目,它減緩下來,所以我想知道,是否有相同

var app = angular.module('xample', []); 
 
app.controller('MainController', MainController); 
 

 
function MainController() { 
 
    var vm = this; 
 
    vm.date = moment(); 
 
    vm.d2 = vm.date.format('MM/DD/YYYY'); 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app="xample"> 
 
    <div ng-controller="MainController as main"> 
 
    <p>Real Date</p> 
 
    <input type="text" ng-model="main.date"> 
 
    <p>Filtered in controller</p> 
 
    <input type="text" ng-model="main.d2"> 
 
    </div> 
 

 
    <body>

回答

0

任何角度的方法。由於模型date和模型d2在您的控制器內部分開,您需要使用Angular的$watch偵聽器。 請記住,你也可以使用與moment.js

var app = angular.module('test', []); 
app.controller('MainController', ['$scope', function($scope) { 

    $scope.date = moment(); 
    $scope.d2 = $scope.date.format('MM/DD/YYYY'); 
    $scope.$watch('date', function(newValue, oldValue) { 
    $scope.d2 = moment(newValue).format('MM/DD/YYYY'); 
    }); 
}]); 

app.controller('SimpleController', ['$scope', function($scope) { 
    $scope.date = new Date(); 
}]); 

JSFiddle

+0

的的date filter component而不是解析日期對象,所以你是說在功能方面,可以插入到前過濾數據沒有內置文本框 ? –

+0

您可以使用預定義的$過濾器選項,自定義過濾器格式化方法或甚至您自己的功能。將數據綁定到視圖需要將模型分配給UI元素(如文本框)。您應該閱讀並理解角度是如何工作的。無論哪種方式,您都可以使用'ng-value'來映射模型中的過濾數據。看看下面的例子http://jsfiddle.net/U3pVM/21124/ – Theodore

+0

對不起,但我只需要一種方法,我可以保存數據並顯示格式化的數據,而不使用'$ watch' –

相關問題