2013-10-28 39 views
0

這裏是什麼,我試圖做查看範圍更新後沒有更新

Athlete.save(athlete,function(result) 
{ 
     $scope.athlete = result.athlete; 
}); 

的問題是,$ scope.athlete變量沒有在我看來,更新很簡單的例子。 爲了得到它來更新我不得不這樣做

Athlete.save(athlete,function(result) 
{ 
     $scope.athlete.fname = result.athlete.fname; 
     $scope.athlete.lname= result.athlete.lname; 
     $scope.athlete.gender= result.athlete.gender; 
     .... 
}); 

這很煩人的速度非常快。 第一塊代碼就好像角度不知道我的$ scope.athlete變量已更新。 這個函數是由ng-click觸發的,而不是一些jquery調用,據我所知,我正在以角度的方式進行。

這裏是我做了一個簡單的情況:http://plnkr.co/edit/lMCPbzqDOoa5K4GXGhCp

+0

你出什麼是好的......在plunker或複製問題的jsfiddle創建簡單的演示,嘗試在'$範圍包裹。$ apply()'...將拋出erorrs如果摘要已經在處理中,但值得一拍 – charlietfl

+0

我做了一個更簡單的例子,它也有問題http://plnkr.co/edit/lMCPbzqDOoa5K4GXGhCp – bsparacino

+0

行第二種情況下工作時你改變個人屬性......所以現在是什麼問題 – charlietfl

回答

1

athlete = { fname: 'new fname', lname: 'new lname' };似乎是創建一個名爲athlete一個新的局部變量,而不是更新您傳遞的一個。

一個更好的辦法來處理這將是通過athleteupdateAthlete()功能的$index並執行以下操作:

$scope.updateAthlete = function (index) { 
    $scope.athletes[index] = { 
     fname: 'new fname', 
     lname: 'new lname' 
    }; 
}; 

編輯:見工作plunkr:http://plnkr.co/edit/KPu3CSvGIl8l581r9A5o?p=preview

0

看到這個答案:

https://stackoverflow.com/a/13104500/151084

基元按值傳遞,對象通過「 引用的副本」傳遞。

具體地,當傳遞一個對象(或陣列)您(不可見) 傳遞到該對象的引用,它可以修改該對象的 內容,但如果試圖覆蓋參考 它不會影響調用者所持引用的副本 - 即 引用本身是按值傳遞的。

這解釋了爲什麼plunker不更新。但是,您的內聯代碼示例(您使用$scope.athlete = result.athlete)似乎應該可行。你可以創建一個樣本顯示失敗嗎?