2015-12-13 2 views
0

Я получаю сообщение об ошибке, когда день sunday.monday до субботы его работы, когда день sunday я получаю ошибку Ошибка: Ошибка при интерполяции: {{isOpen (дилер. день)}} TypeError: не удается прочитать свойство «заменить» неопределенной"Ошибка при интерполяции {{" использование angularjs в моем коде

var ds= 'Sun Dec 13 2015 14:04:42 GMT+0530 (India Standard Time)'; 
     var now = new Date(ds); 

если изменить дату и день его работы тонкой

var ds= 'Sat Dec 12 2015 14:04:42 GMT+0530 (India Standard Time)'; 
     var now = new Date(ds); 

я добавил мой код ниже Просьба помочь мне.

angular.module('myApp', []) 
 
    .controller("myCntrl", function($scope, $filter) { 
 

 
    $scope.isOpen = function(dealerSchedule) { 
 
\t var ds= 'Sun Dec 13 2015 14:04:42 GMT+0530 (India Standard Time)'; 
 
     var now = new Date(ds); 
 
     //var now = new Date(); 
 
     //---if you change day and date you will not get error 
 
     //var ds= 'Sat Dec 12 2015 14:04:42 GMT+0530 (India Standard Time)'; 
 
     //var now = new Date(ds); 
 
\t 
 
     var times = dealerSchedule[Object.keys(dealerSchedule)[now.getDay() - 1]].replace(/(\d\d\:\d\d)(AM|PM)/g, '1/1/1900 $1 $2').split(" - "); 
 
     var nowTime = new Date('1/1/1900 ' + now.toLocaleTimeString(navigator.language, { 
 
     hour: '2-digit', 
 
     minute: '2-digit', 
 
     hour12: true 
 
     })); 
 
\t console.log(nowTime); 
 
     var response = (times == "Leave" ? "Leave" : (nowTime >= new Date(times[0]) && nowTime <= new Date(times[1]) ? "Open Now" : "Closed Now")); 
 
     return response; 
 
    }; 
 

 
\t 
 
    $scope.dealers = [{ 
 

 
     S_Email_id: "[email protected] ", 
 
     status: "", 
 
     Store_Name: "Adtiya Samsung Store", 
 
     Day: { 
 
     "monday": "09:10 AM - 06:30 PM", 
 
     "tuesday": "09:10 AM - 12:00 PM", 
 
     "wednesday": "09:10 AM - 06:30 PM", 
 
     "thursday": "09:10 AM - 06:30 PM", 
 
     "friday": "09:10 AM - 06:30 PM", 
 
     "saturday": "10:15 AM - 04:15 PM", 
 
     "sunday": "10:15AM - 04:15PM" 
 
     }, 
 
    }, { 
 

 
     S_Email_id: "[email protected]", 
 
     status: "", 
 
     Store_Name: "sri shakthi mobile service", 
 
     Day: { 
 
     "monday": "09:00 AM - 06:00 PM", 
 
     "tuesday": "09:00 AM - 06:00 PM", 
 
     "wednesday": "09:00 AM - 06:00 PM", 
 
     "thursday": "09:00 AM - 06:00 PM", 
 
     "friday": "09:00 AM - 06:00 PM", 
 
     "saturday": "09:00AM - 06:00PM", 
 
     "sunday": "Leave" 
 
     }, 
 

 
    }, { 
 

 
     S_Email_id: "[email protected]", 
 
     status: "", 
 
     Store_Name: "sun mobile service center ", 
 
     Day: { 
 
     "monday": "08:30 AM - 07:30 PM", 
 
     "tuesday": "02:30 PM - 07:30 PM", 
 
     "wednesday": "08:30 AM - 07:30 PM", 
 
     "thursday": "08:30 AM - 07:30 PM", 
 
     "friday": "08:30 AM - 07:30 PM", 
 
     "saturday": "08:15 AM - 02:15 PM", 
 
     "sunday": "8:15 \t AM - 12:15AM" 
 
     }, 
 

 
    }, { 
 

 
     S_Email_id: "[email protected] ", 
 
     status: "", 
 
     Store_Name: "ragu mobile service center ", 
 
     Day: { 
 
     "monday": "10:00 AM - 10:00 PM", 
 
     "tuesday": "10:00 AM - 10:00 PM", 
 
     "wednesday": "10:00 AM - 04:00 PM", 
 
     "thursday": "10:00 AM - 10:00 PM", 
 
     "friday": "10:00 AM - 10:00 PM", 
 
     "saturday": "leave", 
 
     "sunday": "leave" 
 
     }, 
 

 

 
    }] 
 
    //var date = new Date(); 
 

 
    //$scope.hhmmsstt = $filter('date')(new Date(), 'hh:mm:ss a'); 
 
    //console.log($scope.hhmmsstt); 
 
    }) 
 
//]]>
<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.1/angular.min.js'></script> 
 
<div ng-app="myApp"> 
 
    <div ng-controller="myCntrl"> 
 
    <label>Search on Label</label> 
 
    <br> 
 
    <input ng-model="query" type="text" placeholder="Search for name" /> 
 
    <br> 
 
    <br> 
 

 
    <div ng-repeat="dealer in dealers"> 
 

 
     {{dealer.Store_Name}} 
 
     <br>{{dealer.S_Email_id}} 
 
     <br>{{dealer.Day}} 
 
     <br> 
 
     <input type="button" value="order" /> 
 
      <span>{{isOpen(dealer.Day)}}</span> 
 
     <br> 
 
     <br> 
 
     <br> 
 

 
    </div> 
 

 
    </div> 
 
</div>

проверить мой код я получаю ошибку enter image description here

пожалуйста не дают вниз bcoze голосов я Доно, почему он не работает Я новичок в technology.help меня

ответ

0

Ошибка исходит от:

var times = dealerSchedule[Object.keys(dealerSchedule)[now.getDay() - 1]].replace(/(\d\d\:\d\d)(AM|PM)/g, '1/1/1900 $1 $2').split(" - "); 

Это немного запутывает то, что вы связываете, чтобы достичь на этой линии?

Также в качестве заметки на будущее, если вы собираетесь ввести код в свои вопросы, удалили код с комментариями, поскольку он не нужен.

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

+0

если день Воскресенье означает, я получаю ошибку Var дц = 'Вс Dec 13 2015 14:04:42 GMT + 0530 (Индия Standard Time)'; var now = new Date (ds); проверьте мою скрипку http://jsfiddle.net/rpbn6u23/79/.if день sunday означает, что я получаю ошибку –

+0

, если ее через несколько дней ее рабочие PLS проверит этот http: // jsfiddle.net/rpbn6u23/80/ .если его в воскресенье его не работает проверка http://jsfiddle.net/rpbn6u23/79/ –

+0

Зачем вы сейчас разбираете дату? Почему бы просто не иметь var now = new Date(); –

3

Проблема с

now.getDay() - 1 потерпит неудачу в воскресенье (getday() вернет 0)

Вы должны положить чек на что, как и аналогичные,

var dayCheck = now.getDay() == 0 ? 6 : now.getDay() - 1; 
var times = dealerSchedule[Object.keys(dealerSchedule)[dayCheck]].replace(/(\d\d\:\d\d)(AM|PM)/g, '1/1/1900 $1 $2').split(" - "); 
+0

@martin Обновите свою скрипку несколькими журналами - просмотрите журналы браузера, чтобы узнать, что происходит. Если вы выведете 'now.getDay() - 1' в воскресенье, потому что' now.getDay() 'возвращает 0, он выдает' NaN', что вызывает вашу ошибку. Большие пальцы вверх для быстрого исправления Амита. Другая рекомендация - посмотреть, можете ли вы изменить структуру данных JSON, чтобы свойство 'Days' начиналось с воскресенья, а не в понедельник. –

+0

какая часть не работает? – Amitd

0

Проблема с кодом содержится в настоящем заявлении

now.getDay() - 1 

Дней вОбъект- это индексы, основанные на нулевом значении, поэтому в воскресенье getDay() вернет 0, и вышеуказанный оператор будет оценивать значение -1, что является недопустимым индексом в вашем массиве ключей вашего объекта Day. Чтобы правильно найти day с даты getDay(), я предлагаю вам использовать индекс, возвращаемый getDay(), и сменить ваш Day объект, чтобы воскресение было первым и в синхронизации со спецификацией, как показано ниже.

Day: { 
     "sunday": "10:15AM - 04:15PM", 
     "monday": "09:10 AM - 06:30 PM", 
     "tuesday": "09:10 AM - 12:00 PM", 
     "wednesday": "09:10 AM - 06:30 PM", 
     "thursday": "09:10 AM - 06:30 PM", 
     "friday": "09:10 AM - 06:30 PM", 
     "saturday": "10:15 AM - 04:15 PM" 
     } 

Также есть несколько несоответствий в вашем объекте JSON для Day

  1. Иногда вы использовали leave и иногда его Leave. Он должен быть таким же для всех объектов дня.
  2. Для третьего дилера (центр обслуживания мобильных телефонов) вы упомянули о воскресных таймингах, как 8:15 AM - 12:15AM, в то время как это должно быть «8:15 AM - 12:15 PM» (с утра 8.15 - после полудня 12 ,15)

исправляющих всю эту консистенция, добавив некоторые новые логические схемы для получения даты из вашего объекта Дня, вот рабочий Pen, который будет отображаться Open Теперь/Закрыто Теперь/Оставить соответственно.

Надеется, что это помогает :)

+0

Вы видели логику моего Пера? Это рабочее решение для отображения статуса, основанного на расписании дилера и текущей дате и времени. – Arkantos

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