2016-05-17 4 views
0

Ich brauche ein bisschen Hilfe zu meinem ionischen Projekt. also möchte ich 2 Objekte in ionischen verbinden, so dass ich den Wert von und Objekt anzeigen kann, das Daten von dem anderen Objekt hat.wie 2 Objekte in ionic über Backand zu verbinden

<ion-list class="list-inset"> 
    <ion-item class="item-text-wrap" ng-repeat='item in todos| filter:firma'> 
    <h2>{{item.company_name}}</h2> 
</ion-item> 
<ion-item class="item-text-wrap" ng-repeat='item in todos2 | filter:{ idcompany:com_id } '> 
<h2>ponedeljek {{item.time_mon_start}}-{{item.time_mon_end}}</h2> 
<h2>torek {{item.time_tue_start}}-{{item.time_tue_end}}</h2> 
<h2>sreda {{item.time_wed_start}}-{{item.time_wed_end}}</h2> 
<h2>četrtek {{item.time_thu_start}}-{{item.time_thu_end}}</h2> 
<h2>petek {{item.time_fri_start}}-{{item.time_fri_end}}</h2> 
<h2>sobota {{item.time_sat_start}}-{{item.time_sat_end}}</h2> 
<h2>nedelja {{item.time_sun_start}}-{{item.time_sun_end}}</h2> 
</ion-item> 

das ist, was ich für die aktuelle Firma angezeigt werden soll, dass ich auf klicken, aber es zeigt alle Zeiten nicht nur eine, die ich will.

.controller('AppCtrl', function($scope, TodoService, cas, $state) { 
$scope.todos = []; 
$scope.todos2 = []; 

function getAllTodos() { 
    TodoService.getTodos().then(function (result) { 
    $scope.todos = result.data.data; 
    $scope.firma = $state.params.aid; 

    }); 
} 
getAllTodos(); 

function getalltimes() { 
    cas.getcompany().then(function (result) { 
$scope.todos2 = result.data.data; 
}); 

} 

getalltimes(); 
}) 

.service('TodoService', function ($http, Backand, $state) { 
var baseUrl = '/1/objects/'; 
var objectName = 'companies/'; 

function getUrl() { 
return Backand.getApiUrl() + baseUrl + objectName; 
} 
function getUrlForId(id) { 
return getUrl() + id; 

} 
getTodos = function() { 
return $http.get(getUrl()); 
}; 
return { 
getTodos: getTodos 
} 
}) 

.service('cas', function ($http, Backand, $state) { 
var baseUrl = '/1/objects/'; 
var time = 'companies_timetable/'; 

function getUrl2() { 
return Backand.getApiUrl() + baseUrl + time; 
} 
getcompany = function() { 
return $http.get(getUrl2()); 
}; 
return { 
getcompany: getcompany 
} 
}) 

das ist jetzt meine app.js-Datei und meine Verbindung zum backand-Dienst. Das funktioniert gut.

this are the companys from object 1

and this are the times showing

so, wenn Sie auf dem Unternehmen klicken soll es die Zeit für sie zeigt. aber hier zeigt es alle Zeiten, die im Objekt sind. Ich sollte nur eine für die eine Firma zeigen Ich habe versucht, alle Objekte in einem Array (Todos) zu geben. aber hat nicht gut funktioniert. also bitte ich brauche Hilfe. Wenn Sie etwas mehr Code oder etwas brauchen, sagen Sie es einfach :).

Antwort

0

Ihr zweiter Filter ist falsch.

Der einfachste Weg, um es zu beheben, ist eine Funktion in $ scope aufzurufen.

Ihre Filter ändern wie folgt aus:

<ion-item class="item-text-wrap" ng-repeat='item in todos2 | filter: isCurrentFirma '> 

dann eine Funktion in Ihrem Controller hinzuzufügen:

$scope.isCurrentFirma = function(item){ 
    // here check if item is equal to firma 

    // code like this: 
    return item.idcompany === $scope.firma.com_id 
} 
+0

irgendwie ist es mir das gleiche Ergebnis liefert, das ich habe. jetzt bekomme ich wieder alle mal nicht nur einen, den ich brauche. – tomaz

+0

Ich ging in die Konsole und dort heißt es, dass com_id nicht definiert ist. – tomaz

+0

Okay, ich habe verstanden, dass die Funktion in Ordnung ist, aber jetzt wird es nicht mehr angezeigt, wenn ich auf eine Firma klicke – tomaz