Angularjs 在$http内更新$scope时,视图未刷新

Angularjs 在$http内更新$scope时,视图未刷新,angularjs,angularjs-scope,ng-options,Angularjs,Angularjs Scope,Ng Options,我有以下HTML: <select class="selectpicker" id="inputSystemLoggingId" data-html="true" ng-init="initDataSources()" ng-options="a.id for a in systemLoggingIds" ng-model="systemLoggingId"> </select> 我看到我的$scope.systemLoggingIds从4正确更新到5,但视图似乎没

我有以下HTML:

<select class="selectpicker" id="inputSystemLoggingId" 
data-html="true" ng-init="initDataSources()" ng-options="a.id for a in systemLoggingIds" 
ng-model="systemLoggingId">
</select>

我看到我的$scope.systemLoggingIds从4正确更新到5,但视图似乎没有收到关于新值的通知。如果我将代码移到$http请求之外,它就可以正常工作。

我猜是jQuery插件导致了奇怪的事情,你可能是对的,调查jQuery内部发生的任何事情都发生在Angular的隐私之外,如果您使用jQuery来更改内容,那么您需要使用$scope让Angular了解它。$applyI通过另一种方式了解它吗?jQuery似乎没有收到关于新角度模型的通知?在任何情况下,在$http请求内调用$scope.$apply都会在下划线选择框更新时产生错误。如果您注释$'inputSystemLoggingId',请参见中的内容。选择选择器;它很好用。此选择器隐藏下划线选择框,并在其上创建一组div、span和li。不知何故,它现在在选择框中获得更新的值。
$scope.systemLoggingId = "4";
$scope.systemLoggingIds = [{"id":"4"}];

$scope.initDataSources = function() {

    $http({
        method: 'get',
        url: '/amenityLogging/getSystemLoggingIds'
    }).success(function (listSystemLoggingIds) {
        console.log($scope.systemLoggingIds);
        $scope.systemLoggingIds = [{"id":"5"}];
        $scope.systemLoggingId = "5";
        console.log($scope.systemLoggingIds);
        $('#inputSystemLoggingId').selectpicker();
    });
}