2013-10-25 107 views
1

的一部分,我有一个页面上的改变模型的部分动作链接。这些链接具有ng-click函数,用于启动服务器操作,返回已更改模型的部分。我将$ http.get(...)的结果分配给已更改的模型部分。但数据从未解决。AngularJS如何更改模型

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.prefs时,它们永远不会解决。我试图保存在一个单独的变量$ http.get承诺然后在$ http.get(...)。成功(...我复制了该变量的部分videos.prefs,但没有工作,要么因为临时可行的是一个承诺 - 我猜

我应该如何通过询问服务器只是有点改变模型的一部分

+0

你需要一个? '了'.get',否则它不会解决,除非你以后做 – tymeJV

+0

你如何访问'$ scope.video.prefs'它是一个HTML绑定 –

+0

tymeJV后.success':?我尝试分配t他偏好使用.success功能,但这不起作用。调试人员说,前提是一个承诺,我看不出有价值。 CaioToOn:例如纳克级=“{iconSelected:video.prefs.user_watchlist == 0}”或在内容标记

{{video.prefs.user_watchlist}}
上模板第一显示抓取工作正常,在将$ http.get的值是空/空/不确定的。 – pferrel

回答

1

这应做到:

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; 
      }); 
     } 
    } 
]); 
+0

Et瞧,这是答案。 – pferrel

+0

起初,我离开了'$ scope.video.prefs = $ http.get(...'和用户界面一闪而过。这显然是因为直到回调执行首选项的时间是承诺所以它的价值是不确定的,这导致NG-类模板有一个无效的表达,从而导致被删除的CSS。这留下了不好的UI状态指的首选项的任何对象。拿出分配,只有在回调分配,以及闪光灯显示顺利的UI过渡。顺便说一句,ng-cloak并没有帮助。 – pferrel

相关问题