0

私はAngularJSにかなり慣れていないので、Wijmoコンボボックスの値の変更に関する新しいデータ(または通常のHTML select 要素のドロップダウン)。以下は私が書いたコードで、最初のページの読み込みで問題なく動作しています。しかし、ドロップダウンを変更すると、loadDomainTree メソッドによってフェッチされた新しいデータでツリーが再ロードされません。まだ古いデータが表示されています。このコードの何が問題なのか、誰か助けてもらえますか?

HTML:

<div ng-controller="DomainCtrl">
    <select id="domain" ng-model="currentDomain" ng-options="item.Name for item in domainList"></select>
    <div>
        <ul id="wijtree">
            <li ng-repeat="item in domainEntityList" id={{item.Id}}>
                <a>{{item.Name}}</a>
            </li> 
        </ul>
    </div>                                                      
</div> 

JS:

$(document).ready(function ()
{
    $("#domain").wijcombobox({
        isEditable: false
    });

    $("#wijtree").wijtree();
});

function DomainDropdownModel(data) {
    this.Id = data.Id.toString();
    this.Name = data.Name;
};

function DomainTreeModel(data) {
    this.Id = data.Id;
    this.Name = data.Name;
};

function DomainCtrl($scope, $locale) {
    $scope.domainList = [];

    $.ajax({
        url: dropDownUrl,
        async: false,
        success: function (data) {
            $(data).each(function (i, val) {
                var domain = data[i];
                var domainId = domain.Id.toString();
                var domainName = domain.Name;
                $scope.domainList.push(new DomainDropdownModel({ Id: domainId, Name:  domainName }));
            });
        }
    });

    $scope.currentDomain = $scope.domainList[0];

    $scope.loadDomainTree = function (domainId) {
    domainEntitiesUrl = DOMAIN_API_URL + DOMAIN_ID_PARAM + domainId;
    //alert(domainEntitiesUrl);
    $scope.domainEntityList = [];
    $.ajax({
        url: domainEntitiesUrl,
        async: false,
        success: function (data) {
            $(data).each(function (i, entity) {
                var domainEntity = data[i];
                var domainEntityId = domainEntity.Id.toString();
                var domainEntityName = domainEntity.Name;
                $scope.domainEntityList.push(new DomainTreeModel({ Id: domainEntityId, Name: domainEntityName }));
                });
            }

        });
    };

    //Will be called on setting combobox dfault selection and on changing the combobox
    $scope.$watch('currentDomain', function () {
        $scope.loadDomainTree($scope.currentDomain.Id);
    });
}
4

1 に答える 1