Breeze と Angular で MVC 4 を使用しています。
いくつかのドメイン モデルを作成しましたが、モデルのリストのみを表示したいと考えています。これは私のコードです:
APIコントローラー:
[BreezeController]
public class TournamentApiController : ApiController
{
private EFContextProvider<TournamentContext> _contextProvider;
public TournamentApiController()
{
_contextProvider = new EFContextProvider<TournamentContext>();
}
[HttpGet]
public string Metadata()
{
return _contextProvider.Metadata();
}
[HttpGet]
public IQueryable<Tournament> Tournaments()
{
return _contextProvider.Context.Tournaments;
}
// ~/breeze/todos/SaveChanges
[HttpPost]
public SaveResult SaveChanges(JObject saveBundle)
{
return _contextProvider.SaveChanges(saveBundle);
}
}
DataService.js:
/* dataservice: data access and model management layer */
app.dataservice = (function (breeze) {
breeze.config.initializeAdapterInstance("modelLibrary", "backingStore", true);
var serviceName = '/breeze/TournamentApi'; // route to the same origin Web Api controller
// *** Cross origin service example ***
//var serviceName = 'http://todo.breezejs.com/breeze/todos'; // controller in different origin
var manager = new breeze.EntityManager(serviceName);
// manager.enableSaveQueuing(true);
var dataservice = {
getAllTournaments: getAllTournaments,
createTournament: createTournament,
saveChanges: saveChanges,
};
return dataservice;
/*** implementation details ***/
function getAllTournaments() {
var query = breeze.EntityQuery
.from("Tournaments");
return manager.executeQuery(query).then(getAllSucceeded);
}
function getAllSucceeded(data) {
debugger;
return data.results;
}
function createTournament(name) {
return manager.createEntity('Tournament', { Name: name });
}
function saveChanges() {
return manager.saveChanges().fail(fail);
}
function fail(error) {
console.log = error;
debugger;
}
})(breeze);
そして私の角度コントローラー:
$scope.getAllTournaments = function () {
dataservice.getAllTournaments().then(getAllSucceeded);
}
function getAllSucceeded(data) {
debugger;
if (data.length > 0)
$scope.tournaments = data;
else
$scope.tournaments = [];
}
$scope.getAllTournaments();
クライアント側では、DB に格納されている 4 つのオブジェクトを確認できます。ただし、リストには次のようなオブジェクトが含まれています。
0: e.dataType
1: e.dataType
2: e.dataType
3: e.dataType
このようなオブジェクトを展開すると、次のように表示されます。
_backingStore: Object
entityAspect: o
__proto__: Object1
_backingStore をさらに展開すると、次のように表示されます。
Date: Mon Jan 01 1900 00:00:00 GMT+0100 (W. Europe Standard Time)
Id: 1
Name: "123"
もちろん、これは私が必要とするものです。
e.dataType._backingStore
リストを反復するときにクライアントコードで使用すべきではないと思うので、何か間違ったことをしていると感じています。
パス全体ではなく、プロパティ名だけを呼び出すにはどうすればよいですか?