2013-10-25 140 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

相關問題