$ scope不更新,除非被调用两次

时间:2016-06-03 06:33:37

标签: javascript angularjs mean-stack

请参阅下面的代码。我很难在我的视图中显示$ scope.brand的值。当我点击获取用户品牌按钮时,没有任何反应。视图中的brand.name没有更新,但是当我点击获取用户品牌按钮后点击测试品牌按钮时,范围的值将会节目。我不知道现在发生了什么。请帮忙。谢谢!

Angular

var app = angular.module('nwApp', [], function($interpolateProvider) {
    $interpolateProvider.startSymbol('<%');
    $interpolateProvider.endSymbol('%>');
});

var url = 'http://localhost:3000';

app.controller('brandsCtrl', ['$scope', '$http', function($scope, $http){

$scope.brands = {};
$scope.brand = {};

$http.get(url+'/brands/all')
    .success(function(result){
        $scope.brands = result;
    });

    $scope.getAssignUser = function(brand_id){
        $.get(url+'/brands/'+brand_id)
            .success(function(result){
                $scope.brand = result;
            });

        $("#brandModal").modal('toggle');
    };

    $scope.checkBrand = function(){
        console.log($scope.brand);
    }
}]);

查看

<a href="javascript:void(0)" class="btn btn-warning" title="Assign User for this Brand" ng-click='getAssignUser(brand._id)' >GET USER BRAND</a>

<a href="javascript:void(0)" class="btn btn-warning"  ng-click='checkBrand()' > TEST BRAND </a>

<div><% brand.name %></div>

1 个答案:

答案 0 :(得分:5)

问题在于:

Database content = Sitecore.Context.ContentDatabase;

$.get(url+'/brands/'+brand_id) .success(function(result){ $scope.brand = result; }); 是jquery所以当它成功更新$ scope.brand时,摘要周期将不会运行并反映该值。

您应该使用angular提供的$.get服务来执行ajax:

$http

其他解决方案是:

在你的jquery ajax中你改变了$http({ method: 'GET', url: url+'/brands/'+brand_id }).then(function successCallback(result) { $scope.brand = result; }, function errorCallback(response) { // called asynchronously if an error occurs // or server returns response with an error status. }); 中的范围变量,如下所示:

$apply