【问题标题】:How to extend custom view in ember tools如何在 ember 工具中扩展自定义视图
【发布时间】:2013-11-03 19:41:54
【问题描述】:

我正在尝试将 ember js 与 jquery mobile ttps://github.com/LuisSala/emberjs-jqm 一起使用

如何在 ember 工具中扩展自定义视图。我尝试了类似的方法,但没有成功。

var MobileBaseView = Ember.View.extend({
    attributeBindings:['data-role']
});
module.exports = MobileBaseView;

var MobileBaseView = require('MobileBaseView');
var PageView = MobileBaseView.extend({
    'data-role': 'page'
});
module.exports = PageView;

没用

*已更新***** 在实施了主销的建议后(谢谢)。我观察到多级扩展在我的情况下不起作用。

我有

移动基础视图:

var MobileBaseView = Ember.View.extend({
    attributeBindings:['data-role']
});
module.exports = MobileBaseView;

工具栏基础视图:

var ToolbarBaseView = App.MobileBaseView.extend({

    attributeBindings:['data-position'],
    'data-position': function() {
        if (this.get('isFullScreen')) {
            return 'fullscreen'
        }

        if (this.get('isFixed')) {
            return 'fixed'
        }
        return ''
    }.property('isFixed', 'isFullScreen').cacheable(),
    isFixed: true,
    isFullsScreen: false
});
module.exports = ToolbarBaseView;

和我的模板中的一行

{{view App.ToolbarBaseView}}

这很好

但只要我再添加一个视图 标题视图

var HeaderView = App.ToolbarBaseView.extend({
    'data-role': 'header'
});
module.exports = HeaderView;

并添加一行

{{view App.HeaderView}}

我得到错误 未捕获的类型错误:无法调用未定义的方法“扩展”

已解决

使用 ember 应用程序套件实现此功能

import ToolbarBaseView from 'appkit/views/toolbar_base_view';

var HeaderView = ToolbarBaseView.extend({
    'data-role': 'header'
});

export default HeaderView; 

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    解决问题的关键是将其分解为单独的问题。如果您在使用视图时遇到问题,这里有一个视图工作示例

    http://emberjs.jsbin.com/OhUFOXe/2/edit

    App.CustomView = Ember.View.extend({
      tagName: 'p',
      templateName: 'customView',
      myColor: 'N/A',
      attributeBindings:['data-color'],
      'data-color': 'purple', 
      didInsertElement: function(){
        var col = this.$().data('color');
        this.set('myColor',col);
      }
    });
    
    App.OtherCustomView = App.CustomView.extend({
      'data-color': 'green',
      templateName: 'otherCustomView'
    });
    

    如果不是视图无法正常工作,那么可能是您的模块框架。视图是否正常工作,只是其中一部分没有被正确注入?

    如果框架看起来是正确的,并且视图被注入(可能是错误的)是 jquery mobile 的问题吗?它是否期望元素不是 div ?

    【讨论】:

    • 你还有什么问题?
    • 所以在我看来问题是您的模块框架(是 requirejs 吗?)没有将您的视图与您的 ember 应用程序相关联。因此,当您尝试执行 {{view App.Something}} 时,App 框架下确实不存在某些东西。从技术上讲,它可能是 {{view Something}} 也可能行不通。
    • 是commonjs。 github.com/rpflorence/ember-tools 我想会有一些更新github.com/rpflorence/ember-tools/issues/80 我希望尝试一些解决方法。我会做更多的事情......谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多