2015-09-15 2 views
0

Я искал и пытался работать над этим какое-то время, но то, как моя компания делает что-то, заставляет его быть излишне сложным для меня. На работе я много работаю над внутренней клиентской системой, которую мы полностью редактируем в HTML с помощью AngularJS. Мы можем запускать скрипты локально в этих файлах HTML, но не можем получить доступ к $ scope в наших функциях.

У меня есть поле ввода, как показано ниже, и мне нужно его, чтобы ограничить номер телефона до 10 цифр и автоматически удалить любое числовое значение. Что я делаю до сих пор, так это.

В начале HTML-файла, сценариев:

<script language = "javascript" type = "text/javascript"> 
 
\t fixPhoneNumber = function(interviewProperty) { 
 
\t \t \t \t \t var cleaned = iData[interviewProperty] 
 
\t \t \t \t \t cleaned = cleaned.replace(/\D/g,''); 
 
\t   iData[interviewProperty] = cleaned; 
 
\t \t \t \t \t console.log(testing testing testing); 
 
\t } 
 
</script>

и в самих данных, это то, как я пытаюсь вызвать данные. Я отвечу на любые вопросы, если я не достаточно конкретный, но я думаю, что здесь все показано.

<button id="copyDP" class="copyButton" ng-click="copy_cust_data('phone', 'local_dir_ad_phone');" type="button">Copy Customer Phone</button><br/> 
 
<input id="local_dir_ad_phone" type="text" class="k-textbox spellcheck" style="width:100%;" ng-change="fixPhoneNumber('local_dir_ad_phone')" ng-required="iData.site_addr_phone_same==='YES'" ng-model="iData.local_dir_ad_phone" /><br/> 
 
<span class="error" ng-show="(iData.local_dir_ad_phone==undefined) || (iData.local_dir_ad_phone==='')">This information is required.</span> 
 
<br/> 
 
<ul> 
 
\t <li>Is this also the best number for us to reach you at? 
 
\t \t <ul> 
 
\t \t \t <input id="contact_phone_good" type="radio" ng-model="iData.contact_phone_good" value="YES" />&nbsp;&nbsp;<b>Yes</b><br/> 
 
\t \t \t <input id="contact_phone_good" type="radio" ng-model="iData.contact_phone_good" value="NO" />&nbsp;&nbsp;<b>No</b><br/> 
 
\t \t \t <div ng-show="iData.contact_phone_good==='NO'"> 
 
\t \t \t \t <ul> 
 
\t \t \t \t \t <li>What is the best number for us to reach you at? <span id="usernote">(Update Prospector Customer record with best contact number)</span></li> 
 
\t \t \t \t </ul> 
 
\t \t \t </div> 
 
\t \t </ul> 
 
\t </li> 
 
</ul>

Значение Я ищу, что изменилось, так это «local_dir_ad_phone», как это уже имеет нг-изменение применяется в данном примере. Возможно, есть причина, по которой ng-change фактически не выполняет свою функцию каждый раз, когда было сделано изменение? От чтения API я чувствую, что он должен запускать его при каждом изменении, сделанном в реальном времени.

Любая помощь приветствуется. Благодаря!

+0

Не выполняется или вы не изменяете изменения? – Jorg

+0

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

+0

, но пульт console.log срабатывает. вы можете получить доступ к области действия через директиву, если можете добавить это. – Jorg

ответ

0

Если я понимаю, что вы saying-

Вы меняете значение на входе за пределами углового, так что не видим изменений. Если вы меняете вход за пределами угловой, вам необходимо позвонить $scope.$apply(), чтобы применить изменения. Поскольку у вас нет доступа к области, вы можете сделать это, позвонив по телефону $apply по телефону $rootScope.

angular.element('body').injector().get('$rootScope').$apply(); 

Но это отстой, и вы должны поговорить с кем-то на работе о получении ручки на сферу, так как это приведет к дайджеста для всего приложения.

+0

Спасибо! Это самое близкое, что я сейчас получу. Мы старая компания с огромной бюрократией, которая окружает код разрозненных систем, которые мы пытаемся исправить вместе, чтобы работать на нашей платформе по мере необходимости. Учитывая достаточное количество времени, я могу получить директиву, касающуюся области, но до тех пор я буду работать над проблемами, чтобы попытаться выполнить свою работу –

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