我們嘗試過angular.copy和angular.extend。但是,這兩個都複製屬性值。我們如何將一個對象的屬性(不帶它們的值)複製到另一個對象?使用Angular將對象屬性(不含值)複製到另一個對象
這是fiddle,我們的嘗試基於how-to-quickly-clear-a-javascript-object。
angular.module('App', []);
function Ctrl($scope) {
function copyNotValues(obj) {
var newObj = angular.copy(obj);
for (prop in newObj) {
if(newObj.hasOwnProperty(prop))
{
newObj[prop] = null;
}
};
return newObj;
}
$scope.master = {
foo: 'original foo',
bar: 'original bar'
};
$scope.copy = angular.copy($scope.master);
$scope.extend = angular.extend($scope.master);
$scope.copyNotValues = copyNotValues($scope.master);
}
感謝您的!我的方法是使用angular.copy(),遍歷新對象,並將其每個屬性設置爲null。創建一個「主」對象可能對另一種情況有好處,因爲我的興趣對象來自REST調用並具有許多屬性,所以創建主對象會導致大量代碼重複。 –
@ShaunLuttin在我的ActionScript體驗中,在服務器端和客戶端複製對象是非常有意義的。但是由於JavaScript是一種鬆散類型的語言,因此開銷可能沒有意義。我很確定每個循環都會給你一個對象的所有屬性;你應該能夠將其封裝到一個實用函數中,以便於重用。祝你好運! – JeffryHouser
偉大的提示!我們已經複製了服務器端和客戶端上的對象。在服務器上,我們有一個綁定模型和一個視圖模型。在客戶端,我們有HTML模板中存在的ng模型。如果我們也要在ng控制器中複製模型,那麼我們將有相同模型的四個表示形式!就像你提到的,三個似乎有足夠的開銷。 JavaScript for循環在我們投入到Angular服務中的效用函數中做了訣竅。謝謝你的鼓勵! –