javascript - 如何使嵌入 View 中的 Ember 组件中的数据绑定(bind)起作用?

标签 javascript model-view-controller ember.js

我有一个 View ,以及嵌入其中的组件。我想使用 {{view}} 帮助器将参数传递给 View ,然后让组件也使用该数据,但它似乎不起作用。我不知道我错过了什么......

这是代码:

App.DisplayView = Ember.View.extend({
    templateName: 'display',
    property1: 'property1 default value',
    property2: 0,

    debugProps : function() {
        console.log('view property1: ' + this.get('property1'));
        console.log('view property2: ' + this.get('property2'));
    }.on('init')

});


App.DisplayEmbeddedComponent = Ember.Component.extend({
    prop1: 'prop1 default value',
    prop2: 0,

    actions : {
        buttonClicked: function() {
            console.log('button clicked!');
            console.log('prop1: ' + this.get('prop1'));
            console.log('prop2: ' + this.get('prop2'));
        }
    },

    debugProps : function() {
        console.log('this: ' + this);
        console.log('prop1: ' + this.get('prop1'));
        console.log('prop2: ' + this.get('prop2'));
    }.on('init')

});

模板如下:

<script type="text/x-handlebars" data-template-name="display">
    <h2>Dislay view</h2>
    {{display-embedded prop1=property1 prop2=property2 }}
</script>

<script type="text/x-handlebars" data-template-name="components/display-embedded">
    {{input value=prop1 type="text"}}
    {{input value=prop2 type="text"}}

    <button {{action "buttonClicked"}}>Button X</button>
</script>

然后我使用具有嵌入组件的 View ,如下所示:

{{view App.DisplayView property1='prop 1 value' property2='prop 2 value'}}

输出如下:

// this shows data has been passed to the view correctly
view property1: prop 1 value
view property2: prop 2 value

// this shows that "this" points to component as expected, but properties remain null
this: <App.DisplayEmbeddedComponent:ember526>
prop1: undefined
prop2: undefined

// same when I click the button in the component: properties are undefined
button clicked!
prop1: undefined
prop2: undefined 

如您所见,prop1prop2 似乎未定义,并且输入以空值开头,而不是我传递给 View 的值。

我做错了什么?我试图正确理解这种嵌套,但似乎没有文档涵盖嵌入 View 中的组件的这种情况。

谢谢!

最佳答案

View 中定义的属性需要使用 View 来引用。

{{display-embedded prop1=view.property1 prop2=view.property2 }}

http://emberjs.jsbin.com/cahogawa/1/edit

关于javascript - 如何使嵌入 View 中的 Ember 组件中的数据绑定(bind)起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24044691/

相关文章:

javascript - 在没有全局变量的情况下对多个事件使用 promise 回调

javascript - 如何在此 Web 应用程序中使用 jQuery 选择器?

php - html5 嵌入 mp4 视频 |如何知道设备是iphone 3/3gs 还是4 | mp4尺寸太大

java - 获取 GridLayout 中 JPanel 的位置/索引?

ember.js - Windows 上的 ember-cli 构建速度太慢

javascript - 现代网络应用程序/网站如何进行回发? javascript/ajax、<form> 还是 X?

java - 如何在 GET 调用中将映射(键值对)作为请求参数发送

php - 在 Magento 中加入两个具有不同字段的集合以按日期选择

javascript - 嵌套数组元素的 Ember 计算属性

jquery - 单击表格行时如何在 <tr> 元素中创建一个类名