使用ExpressionProperties访问不同的模型templateOptions

时间:2016-03-02 08:04:07

标签: javascript angularjs forms angular-formly

首先,我想说Angular Formly对于像我这样的新手来说是一个很棒的图书馆。我不是一个Web开发人员,但是发现这个库非常直观且功能强大。

但是我确实需要使用Expression Properties的帮助。

我有一个包含库项目的模型库,例如:

{
  "itemId":"STX001",
  "title":"Grey Wolf",
  "category":"White", etc.
}
{
  "itemId":"STX002",
  "title":"Noble Black",
  "category":"Black", etc.
}
etc.

我还有一个形式表单,在顶部字段中使用ui-select来查找库中的所有值,选择其中一个(我将称之为Item),然后填充表单中的其余字段使用Items属性,然后将表单提交给Catalogue模型。

我遇到的问题是我无法从其他字段中引用Item的属性。我尝试使用expressionProperties,但只能提取valueProp值(唯一ID),但我在Item.title,Item.category等之后。

以下代码:

{
 //This is form fields for creating a new Catalogue entry
 key: 'libraryId',
 type: 'ui-select',
 templateOptions: {
    label: gettextCatalog.getString('Search Library'),
    options: [],
    valueProp: 'itemId',
    itemTitle: 'title',
    itemCategory: 'category',
    labelProp: 'title',
    focus: true,
    placeholder: 'Start typing keywords..'
 },
 controller: function ($scope) {
   getLibrary().then(function(data){
       $scope.options.templateOptions.options = data;
       return data;
   });
 }
}
{
 key: 'title',
 type: 'input',
 templateOptions: {
    label: gettextCatalog.getString('Name'),
    required: true
 },
 expressionProperties : {
   //This is what i'm trying to achieve but doesn't work
   'templateOptions.placeholder' : 'model.libraryId.itemTitle'
 }
},

0 个答案:

没有答案