2016-05-29 58 views
0

我正在使用ng-admin。
根據doc,我創建了一個自定義字段。
ng-admin識別FooFiledType,但它不渲染FoofieldView並使用原始的FieldView!ng-admin無法識別自定義字段視圖

配置模塊:

angular.module('admin', ['ng-admin']); 

import FooField from './FooFieldType'; 

angular.module('admin') 
    .config(['NgAdminConfigurationProvider', function (nga) { 
    nga.registerFieldType('foo', FooField); 
    }]) 
    .config(['FieldViewConfigurationProvider', function (fvp) { 
    fvp.registerFieldView('foo', require('./FooFieldView')); 
    }]) 
    ; 
angular.module('admin').config(['NgAdminConfigurationProvider', function (nga) { 
    var bar = nga.entity('bar'); 
    bar.creationView().fields([nga.field('foo','foo')]); 
}); 

FooField.js:

import Field from 'admin-config/lib/Field/Field'; 
class FooField extends Field { 
    constructor(name) { 
    super(name); 
    } 
} 
export default FooField; 

FooFieldView.js:

export default { 
    // displayed in listView and showView 
    getReadWidget :() => '<ma-number-column field="::field" value="::entry.values[field.name()]"></ma-number-column>', 
    // displayed in listView and showView when isDetailLink is true 
    getLinkWidget :() => '<a ng-click="gotoDetail()">' + module.exports.getReadWidget() + '</a>', 
    // displayed in the filter form in the listView 
    getFilterWidget :() => '<ma-input-field type="number" field="::field" value="values[field.name()]"></ma-input-field>', 
    // displayed in editionView and creationView 
    getWriteWidget :() => '<h1>testFoo</h1><ma-input-field type="number" field="::field" value="entry.values[field.name()]"></ma-input-field>' 
}; 

回答

1

Doc看起來不完整......但我已將其縮小到字段中缺少的'this._type'設置。您需要更改FooField.js如下:

.... 
class FooField extends Field { 
    constructor(name) { 
    super(name); 
    //THIS IS THE IMPORTANT PART: 
    this._type = 'foo'; 
    //DOC DOESN'T SPEAK ABOUT 
    } 
} 
.... 

當您在FooField類中定義_type然後根據類型的觀點被稱爲因此呈現。否則,因爲我們是從'字段'繼承字符串視圖呈現,它似乎沒有什麼作品...

Doc真的需要得到一些更新:)

相關問題