[英]How can i remove the object in the array if 2 properties of array objects are equal?
[英]How can I modify the properties of a promise to be equal to the properties of an object in AngularJS?
基本上,我試圖在一個服務中創建一個泛型函數,該函數接受一個對象的值並檢查是否與另一個對象共享任何參數,如果共享,則將原始對象的參數值替換為新對象中的共享參數。 此函數適用於任何JSON對象,如下所示:
load: function(loadTrue, settings1, settings2) {
if (loadTrue) {
for (var prop in settings1) {
if (settings2.hasOwnProperty(prop)) {
settings1[prop] = settings2[prop];
}
}
return settings1;
}
else{
return settings1;
}
},
就像我說的那樣,這對於任何JSON對象都可以很好地工作,但是我現在面臨的問題是當我嘗試將資源與對象進行比較時(由於以下原因,該函數中的第二項始終必須是普通的JSON對象)項目的性質,但我不能總是返回一個對象,有時它是我返回的資源)。
這是我在控制台中登錄它們時正在比較的兩個對象:
圖1
Settings1: Resource {$promise: Object, $resolved: false}
Settings2: Object {class: "messageType", id: 181, message: "Test messageee"…}
但是,當展開時,兩者看起來非常相似:
圖2
Settings1:
$promise: Object
$resolved: true
class: "messageType"
id: 181
message: "Test"
messageName: "testing 1"
Settings2:
class: "messageType"
id: 181
message: "Test messageee"
messageName: "testing 1"
如您所見,我基本上需要將settings1中的message屬性覆蓋為settings2。 問題似乎是(通過調試器時),而不是通過Figure [2],Angualr似乎正在查看Figure [1],並且發現兩個對象之間沒有共享參數,因此沒有任何覆蓋。
為此的方法調用如下所示:
$scope.subject = myService.load($scope.loadIsTrue, $scope.subject, $localStorage.subject2);
主題聲明如下:
$scope.subject = messageService.messageResource.get({messageName: 'test'});
嘗試以下更改:
在您的messageService服務中(您必須更改它以匹配您的方法):
get: function (message) {
var deferred = $q.defer();
$http({
url: '/YourHTTPcall',
method: "GET",
dataType: 'json'
}).success(function (data, status, headers, config) {
deferred.resolve(data);
}).error(function (data, status, headers, config) {
});
//This line is key
return deferred.promise;
}
然后在您的其他代碼中進行調用
messageService.messageResource.get({messageName: 'test'}).then(function(data){
$scope.subject = data;
}).then(function() {
myService.load($scope.loadIsTrue, $scope.subject, $localStorage.subject2);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.