2015-10-14 48 views
0

我要選擇的項目,從下拉列表中,然後我就會看到輸入 選擇的客戶數據,那麼iwant編輯輸入,然後通過BREEZ JS和網頁API使用微風隨着Web API和角JS

它們保存在數據庫

我有網絡API控制器是這樣的:

[BreezeController] 
    public class ZzaController : ApiController 
    { 
     readonly EFContextProvider<ZzaDbContext> _contextProvider = 
      new EFContextProvider<ZzaDbContext>(); 

     // ~/breeze/Zza/Metadata 
     [HttpGet] 
     public string Metadata() 
     { 
      return _contextProvider.Metadata(); 
     } 

     // ~/breeze/Zza/Customers 
     [HttpGet] 
     public IQueryable<Customer> Customers() 
     { 
      var customers = _contextProvider.Context.Customers; 
      return customers; 
     } 

     // ~/breeze/Zza/SaveChanges 
     [HttpPost] 
     public SaveResult SaveChanges(JObject saveBundle) 
     { 
      return _contextProvider.SaveChanges(saveBundle); 
     } 
    } 

角服務是這樣的:

var services = function (http) { 
    breeze.config.initializeAdapterInstance("modelLibrary", "backingStore"); 
    this.getBybreeze = function (successed) { 

     var dataService = new breeze.DataService({ 
      serviceName: 'breeze/Zza', 
      hasServerMetadata: false 
     }); 
     var manager = new breeze.EntityManager(
     { 
      dataService: dataService 
     }); 
     var entityQuery = breeze.EntityQuery; 
     return entityQuery.from('Customers').using(manager).execute().then(successed).catch(); 

    } 
    this.saveByBreeze =function() { 

     var dataService = new breeze.DataService({ 
      serviceName: 'breeze/Zza', 
      hasServerMetadata: false 
     }); 
     var manager = new breeze.EntityManager(
     { 
      dataService: dataService 
     }); 
     manager.saveChanges().fail(function (error) { alert("Failed save to server: " + error.message); }); 

    } 
} 

services.$inject = ["$http"]; 
app.service("TestService", services); 

和角度的Controler這樣的:

var controller = function (scope, testService, ngTableParams, filter, upload, notification) { 
    var self = this; 
    self.title = "Test"; 
    self.customers = []; 
    self.selected = ""; 
    self.selectedFirstName=""; 
    self.selectedLastName=""; 
    testService.getBybreeze(function (data) { 
     self.customers = data.results; 
    }); 
    self.selectedCustomer = function() { 
     angular.forEach(self.customers, function (item) { 
      if (item.Id === self.selected) { 
       self.selectedFirstName = item.FirstName; 
       self.selectedLastName = item.LastName; 
      } 
     }); 
    } 
    self.save = function() { 
     testService.saveByBreeze(); 
    } 
} 
controller.$inject = ["$scope", "TestService", "NgTableParams", "$filter", "Upload", "Notification"]; 
app.controller("TestController", controller) 

查看:

<div class="col-md-12" style="margin-top:20px"> 
    <div class="col-md-2 " style="margin-top: 7px"> 
     <label class=""> 
      Customers: 
     </label> 
    </div> 
    <div class="col-md-10"> 
     <div class="col-md-3"> 
      <select class=" form-control" ng-change="self.selectedCustomer()" name="Id" ng-model="self.selected" ng-options="item.Id as item.FullName for item in self.customers"></select> 
     </div> 
    </div> 

    <div class="col-md-10 form-group"> 
     <hr style="border-color: #000080" /> 
     <fieldset data-bind="with: currentCustomer"> 
      <legend>Customer:</legend> 
      <label for="customerName">Name:</label> 
      <br/> 
      <input class="form-control" id="customerName" value="{{self.selectedFirstName}}" /> 
      <label for="customerPhone">Tell:</label> 
      <br/> 
      <input id="customerPhone" class="form-control" value="{{self.selectedLastName}}" /> 
      <br /> 
      <button class=" btn btn-default" id="saveButton" ng-click="self.save()">Save</button> 
     </fieldset> 
    </div> 
</div> 

我認爲一切都OK 但是當我保存它,沒有什麼保存

回答

0

你的代碼創建一個新的空EntityManager與每個查詢和保存操作。相反,您應該在您的TestService中創建一個EntityManager,並將其用於所有查詢和保存操作。

var services = function (http) { 
    breeze.config.initializeAdapterInstance("modelLibrary", "backingStore"); 
    var dataService = new breeze.DataService({ 
     serviceName: 'breeze/Zza', 
     hasServerMetadata: false 
    }); 
    var manager = new breeze.EntityManager(
    { 
     dataService: dataService 
    }); 

    this.getBybreeze = function (successed) { 
     var entityQuery = breeze.EntityQuery; 
     return entityQuery.from('Customers').using(manager).execute().then(successed); 
    } 

    this.saveByBreeze = function() { 
     manager.saveChanges().catch(function (error) { alert("Failed save to server: " + error.message); }); 
    } 
} 

services.$inject = ["$http"]; 
app.service("TestService", services);