2016-08-11 1 views
0

Привет всем Я новичок в angularjs На самом деле я пытаюсь добавить одно значение ng-module в другой ng-moudule date input in angularjs ... Для примера: - 17-08-2016 добавить 20 Ожидаемый 03-09-2016 , my plunkКак добавить количество дней в существующую дату ng-module в angularjs?

Я не знаю, где я совершил ошибку и как получить решение, пожалуйста, если кто-нибудь знает ответ, помогите мне за то же спасибо.

Мой контроллер

$scope.name = { 
"_id": "57ac1b6d82e1c5940ac3c730", 
"user": { 
"_id": "57400c32bd07906c1308e2cf", 
"displayName": "mani selvam" 
}, 
"__v": 0, 
"terms": "20", 
"invoice_date": "2016-08-17", 
"due_date": "" 
}; 

Date.prototype.addDays = function(days) { 
    this.setDate(this.getDate() + parseInt(terms)); 
    return this; 
}; 

Мой Html: -

<tr ng-repeat="mani in name"> </tr> 
     <td >{{name.invoice_date | date:'dd-MM-yyyy'}}</td> 
      <td >{{name.terms }}</td> 
      <td >{{name.invoice_date | date:'dd-MM-yyyy'}} + {{name.terms }}</td> 
+0

Я не могу видеть, где вы используете 'addDays '. Я вижу, что вы его определили, но никогда не использовали. Вы хотите сказать, что хотите добавить дни в последнем столбце? –

+0

Привет, мош feu спасибо за ваш комментарий, можете ли вы предоставить решение о том, как использовать 'addDays' в' HTML' и лучший способ предоставить решение через plunker ..... пожалуйста, предложите, использовали ли мы контроллер функция совершенна или нет ... пожалуйста, помогите мне за то же самое .... –

+0

@ Mosh Feu: - Я упомянул ожидаемый результат выше, пожалуйста, предоставьте решение в plunker .... заранее спасибо за ваш ответ .. –

ответ

1

Вы можете это исправить, делая это:

var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope) { 
    $scope.name = { 
"_id": "57ac1b6d82e1c5940ac3c730", 
"user": { 
"_id": "57400c32bd07906c1308e2cf", 
"displayName": "mani selvam" 
}, 
"__v": 0, 
"terms": "20", 
"invoice_date": "2016-08-17", 
"due_date": "" 
}; 

$scope.addDays = function(stringDate,days) { 
    var date = new Date(stringDate); 
    date.setDate(date.getDate() + parseInt(days)); 
    return date; 
} 

}); 

затем в шаблоне сделать:

<td >{{addDays(name.invoice_date,name.terms) | date:'dd-MM-yyyy'}}</td> 

причина, почему-то, как это не работает в вашем примере:

<td >{{(name.invoice_date | date:'dd-MM-yyyy').addDays({{name.terms}})}} + {{name.terms }}</td> 

потому, что угловая дата фильтр возвращает строковое представление и, таким образом, не связан с датой прототипа

в теории это может работать, если ваше имя.invoice_date будет объектом даты вместо строки в вашем json. взглянуть на это из исходного кода углового фильтра

@param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or 
* number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its 
* shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is 
* specified in the string input, the time is considered to be in the local timezone. 

так, если бы дату, чтобы начать с вами могли бы сделать:

<td >{{(name.invoice_date).addDays({{name.terms}}) | date:'dd-MM-yyyy'}} + {{name.terms }}</td> 
+0

Привет 'Arno_Geismar' спасибо вам, суп много .... он работает отлично .... –

+0

Привет, господин Арно_Гейсмар ..., в то время как я реализую свой код, я получил ошибку, подобную этой: - 'Неиспользуемая ошибка: [$ rootScope: infdig] 10 $ digest() достигнуты итерации. Aborting! Наблюдатели, уволенные за последние 5 итераций: [["fn: ngModelWatch; newVal: \" 2016-08-22T00: 00: 00.000Z \ "; oldVal: \" 2016-08-22T00: 00: 00.000Z \ "" ], 'так что если вы поможете нам в решении ... спасибо ... –

+0

, то я использовал ng-bind следующим образом: - ng-bind =" due_date = addDays (sryarndebitnote.invoice_date, sryarndebitnote.terms) | date : «dd-MM-yyyy» «... я вот здесь проблема. Я показываю вывод, например: - Пн 22 августа 2016 05:30:00 GMT + 0530 (IST), поэтому дайте нам знать решение, пожалуйста .. –

Смежные вопросы