2015-10-13 1 views
1

У меня проблема с куском углового кода: у меня есть «ng-select», который работает в некоторых средах, но не в других!Угловой: выберите/ng-option не уволен: как отлаживать?

Модель этого кода:

var imputationApp = angular.module('imputationApp', []).controller('imputationController', function($scope) { 
    $scope.currentSL = ''; 
    $scope.sousLignes = [ 
     { "slidx":"c5!1875354624","desc":"option1 " }, 
     {"slidx":"c9!1875379297","desc":"option 2" }, 
     { "slidx":"c9!1875379392","desc":"option 3" } 
    ]; 
}); 

и HTML:

<div ng-app="imputationApp" ng-controller="imputationController"> 
<fieldset> <legend>Imputation :</legend> 
    <select class="liste-candidats-select" ng-model="currentSL" ng-options="item as item.desc for item in sousLignes" ></select> 
    <br /> 
<span> aE: {{currentSL.desc}}/{{currentSL.slidx}} </span> 
</fieldset> 
</div> 

Это может быть проверено на скрипку: http://jsfiddle.net/zDvD9/78/

один, нет никаких проблем.

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

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

Благодарим за любое возможное решение. Didier

+1

Возможно, вы захотите проверить консоль браузера, чтобы увидеть, есть ли какая-либо ошибка, когда она не работает. Или вы можете описать, как он не работает: в списке нет параметров? 'ng-model' не обновляется при изменении? – Icycool

+0

Hi Icycool, к сожалению, в консоли нет сообщений ... и пробелы под полем выбора не обновляются, когда они не запускаются. Я попробую еще раз добавить функцию «ng-change» ... – Didier68

+0

В нормальных случаях ng-change не понадобится для привязки данных. Являются ли ваши варианты выбора или модели асинхронными? – Icycool

ответ

0

Я не уверен на 100%, но я думаю, что мое беспокойство не связанно непосредственно с Угловым, но это скорее проблемой интеграции углового «код» в другом приложении, которое использует JQuery, ...

Компонент «ng-select» является единственной проблемой «Угловая», которая есть на этой странице.

Через 3 дня головной боли, я нашел обходной путь, который нужно какую-то работу (надеюсь!):

В мой контроллер, я добавил глобальную вар:

var AngularMainScope = null; 
var imputationApp = angular.module('imputationApp', []).controller('imputationController', function($scope) { 
     ... 
     AngularMainScope = $scope; 

$scope.onSelectChangeSousLigne = function(sel){ 

    alert(' onSelectChangeSousLigne fired !!! ' + sel.value); 

    var wsl = $scope.data.idx_sousLignes[sel.value]; 
    $scope.data.currentSL = wsl; 
    // do some stuffs.. 
    ... 
    // Tell to Angular... 
    if (!$scope.$$phase) { 
     $scope.$apply(); // MAGIC ! 
    } 
    return; 
} 

И в HTML код ...

<select ng-model="data.cur_slidx" onchange="AngularMainScope.onSelectChangeSousLigne(this)" > 
    <option ng-repeat="item in data.sousLignes" value="{{item.slidx}}">{{item.desc}}</option> 
</select> 

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

+0

Как раз перед тем, как закрыть свой вопрос, я обновляю свое решение, указанное выше. Спасибо Icycool и realkyton за вашу помощь! – Didier68

0

Существует директива под названием ng-change. Вы можете использовать его и установить точку останова в вызываемой функции.

+0

Привет, я добавил эту функцию в моем контроллере: \t \t \t $ scope.onSelectChange = функция() { \t \t оповещения ('ngChange уволили !!!'); \t \t возвращение; \t} , а также в выбранном: нг-изменения = «onSelectChange()» \t \t (может быть протестирован на http://jsfiddle.net/zDvD9/82/), но эта функция не обжигают в моей HTML-страница ... – Didier68

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

  • Нет связанных вопросов^_^