1

我有一段角码有问题:我有一个“ng-select”,它在某些环境中有效,但在其他环境中无效!

这段代码的模型是:

 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/

一个人,没有问题。

但是当集成到更复杂的页面中时,它有时会运行,有时不会......所以我不可能提供更多关于它的细节。

有人可以给我一些想法如何尝试调试它吗?我从不使用角度来做,我不知道是否有办法捕捉选择更改的事件......

感谢您提供任何可能的解决方案。迪迪埃

4

2 回答 2

0

我不是 100% 确定,但我认为我的担忧与 Angular 没有直接关系,而是在另一个使用 jQuery 的应用程序中集成 Angular“代码”的问题,......

“ng-select”组件是我在此页面中遇到的唯一“Angular”问题。

经过 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>

我仍然需要检查是否可以正确检索当前值。我已经很高兴每次更改值都有一个事件!

于 2015-10-14T10:08:13.163 回答
0

有一个名为ng-change的指令。您可以使用它并在被调用函数中设置断点。

于 2015-10-13T08:19:25.463 回答