2015-02-23 61 views
1

我試圖用反應以產生奧裏利亞自定義元素,通過以下對Aurelia Q & A這個例子和下面的異常第三方庫發生:依賴注入(DI)模式在奧裏利亞

Potentially unhandled rejection [1] TypeError: Cannot read property 'render' of undefined 

我在做什麼錯?在這裏我的測試代碼:

的test.html

<import from="./myelement"></import> 
<my-element foo.bind="Value"></my-element> 

myelement.html

<template> 
    <input type="text" placeholder="user"> 
</template> 

myelement.js

import {Behavior} from 'aurelia-framework'; 
import {React} from 'aurelia-framework'; 

export class MyElement { 
    static metadata(){ 
    return Behavior 
     .customElement('my-element') 
     .withProperty('foo') 
     .noView(); 
    } 

    static inject() { 
    return [Element]; 
    } 

    constructor(element) { 
    this.element = element; 
    console.log('this:', this); 
    console.log('element:', element); 
    } 

    bind() { 
    // React.render(<MyReactElement foo={this.foo} />, this.element); 
    React.render(React.createElement(MyReactElement, { foo: this.foo }), this.element); 
    } 

    fooChanged() { 
    this.bind(); 
    } 
} 
+3

我想'從'aurelia-framework'導入{React};'實際上應該是:'從'react'導入{React};' – WiredPrairie 2015-02-23 16:28:32

+0

right,'從'react''導入React實際上 – bsrdjan 2015-02-23 19:04:26

+1

解決問題? – WiredPrairie 2015-02-23 19:28:41

回答

2

的TRIC k與進口第三方圖書館是你必須選擇你希望如何訪問圖書館。在你的情況,如果你想創建一個使用反應,結合了視圖和視圖模型,你可以這樣做只是這樣一個自定義元素 -

jspm install react

,然後您的視圖模型中 -

import react from 'react'

然後你就可以在你的視圖模型在任何地方使用它,比如 -

attached(element){ 
    // React pseudo-code 
    react.render(element); 
} 

如果您選擇通過依賴注入來加載庫,以便它可以作爲模塊在任何地方提供,您有更多選項,但我認爲這應該會給您一個啓動。