Javascript AngularJS如何更改模型的一部分

Javascript AngularJS如何更改模型的一部分,javascript,angularjs,Javascript,Angularjs,我在一个页面上有操作链接,可以更改模型的某些部分。这些链接具有ng click函数,可触发服务器操作,返回更改的模型部分。我将$http.get(…)的结果分配给模型中已更改的部分。但这些数据从未得到解决 GuideControllers.controller('VideoDetailCtrl', ['$scope', '$http', '$routeParams', 'Video', function($scope, $http, $routeParams, Video, Prefer

我在一个页面上有操作链接,可以更改模型的某些部分。这些链接具有ng click函数,可触发服务器操作,返回更改的模型部分。我将$http.get(…)的结果分配给模型中已更改的部分。但这些数据从未得到解决

GuideControllers.controller('VideoDetailCtrl', ['$scope', '$http', '$routeParams', 'Video',
    function($scope, $http, $routeParams, Video, Preference) {
        $scope.video = Video.get({ id: $routeParams.id });
        $scope.addToWatchlist = function(id) {
            $scope.video.prefs = $http.get('/api/preference/'+id+'/add_to_watchlist.json')
        }
    }
]);
第一个Video.get(…)用一个最终改变页面的承诺填充模型,Video.prefs在解析时是正确的。但是,当我单独获取video.pref时,它们从未得到解决。我尝试将$http.get承诺保存在一个单独的变量中,然后在$http.get(…).success(…我将该变量的部分复制到videos.prefs中,但这也不起作用,因为临时可行是一个承诺——我想

我应该如何通过向服务器请求该位来更改部分模型?

这应该可以做到:

GuideControllers.controller('VideoDetailCtrl', ['$scope', '$http', '$routeParams', 'Video',
    function($scope, $http, $routeParams, Video, Preference) {
        $scope.video = Video.get({ id: $routeParams.id });

        $scope.addToWatchlist = function(id) {
            $http.get('/api/preference/'+id+'/add_to_watchlist.json').success(function(data) {
                $scope.video.prefs = data;
            });
        }
    }
]);
这应该做到:

GuideControllers.controller('VideoDetailCtrl', ['$scope', '$http', '$routeParams', 'Video',
    function($scope, $http, $routeParams, Video, Preference) {
        $scope.video = Video.get({ id: $routeParams.id });

        $scope.addToWatchlist = function(id) {
            $http.get('/api/preference/'+id+'/add_to_watchlist.json').success(function(data) {
                $scope.video.prefs = data;
            });
        }
    }
]);

.get
之后,您需要一个
.success
,否则它将无法解决,除非您稍后再这样做。您如何访问
$scope.video.prefs
?它是HTML绑定吗?tymeJV:我尝试在.success函数中分配prefs,但没有效果。调试器说prefs是一个承诺,我看不出有caioton:example ng class=“{iconSelected:video.prefs.user_watchlist==0}”或在内容标记{{video.prefs.user_watchlist}中模板获取的第一个显示可以正常工作,在$http.get之后,值是空的/空的/未定义的。在
.get
之后需要一个
.success
,否则它将无法解析,除非您稍后执行此操作。您如何访问
$scope.video.prefs
?它是HTML绑定吗?tymeJV:我尝试在中分配prefs。success f函数,但这不起作用。调试器说prefs是一个承诺,我看不到那里有值。caioton:example ng class=“{iconSelected:video.prefs.user_watchlist==0}”或在内容标记{video.prefs.user_watchlist}中模板获取上的第一个显示工作正常,在$http.get之后,值为空/null/undefined.Et瞧,这就是答案(…中,UI闪烁。这显然是因为在执行回调之前,prefs是一个承诺,因此其值未定义,这会导致模板中的ng类具有无效表达式,从而导致css被删除。这会为引用prefs的任何对象留下一个坏的UI状态。取消分配后,只有ssigned在回调中,flash消失,显示出平滑的UI过渡。顺便说一句,ng斗篷对此没有帮助。等等,这就是答案。首先,我留下了
$scope.video.prefs=$http.get(…
中,UI闪烁。这显然是因为在执行回调之前,prefs是一个承诺,因此其值未定义,这会导致模板中的ng类具有无效表达式,从而导致css被删除。这会为引用prefs的任何对象留下一个坏的UI状态。取消分配后,只有ssigned在回调中,flash消失,显示出平滑的UI过渡。顺便说一句,ng斗篷对此没有帮助。