2016-03-16 65 views
0

目前我可以使用下面的代碼,以延長我的產品實體的微風模型實體類型擴展模型:微風JS - 從對象圖

function registerProduct(metadataStore) { 


     function Product(){} 


     // description property 
     Object.defineProperty(Product.prototype,'description', { 
      // TODO: handle selected globalization language 
      get: function() { 
       return this.descripFr; 
      } 
     }) 

     metadataStore.registerEntityTypeCtor('Product',Product); 
    } 

我使用性質從實體遇到的問題圖(在這種情況下codeligne)在像這樣的擴展屬性:

 Object.defineProperty(Product.prototype,'name', { 
      get: function() { 
       var codeligne = this.codeligne; 
       var name = codeligne.ligne + '-' + this.codeprod; 
       return name; 
      } 
     }) 

這會因codeligne.ligne未定義例外。 如果我直接在ng-repeat中使用codeligne.ligne,那麼屬性會正確顯示,所以Breeze似乎意識到它。

有關如何在擴展模型時使用codeligne圖形對象的任何建議?

回答

1

「ligne」導航屬性所代表的實體可能尚未加載。您應該在引用其屬性之前檢查它是否包含值。

Object.defineProperty(Product.prototype, 'name', { 
     get: function() { 
      var codeligne = this.codeligne; 

      if (!codeligne) { 
       return null; 
      } 

      var name = codeligne.ligne + '-' + this.codeprod; 
      return name; 
     } 
    }) 
+0

感謝您的回答。在檢查完這個之後,看起來你是對的,出於某種原因,當我擴展元數據時,對象圖沒有被加載。我現在所做的修正是在啓動時用相關的codelignes數據啓動應用程序。這似乎使微風意識到這個屬性。可能不是最好的解決方案,但由於該數據實際上是在其他地方使用查找數據,所以在這種情況下,它是可接受的服務器往返。 –