2015-05-05 2 views
5

Я хочу обновить значение свойства на push-действие, но я не знаю, как получить доступ к свойству из функции!Как обновить свойство из функции в Aurelia

export class Datas { 
    prop1 = "my val"; 
} 

var connection = new WebSocket('ws://localhost:8787', 'json'); 
connection.onmessage = function (e) { 
    // prop1 of Datas = e.data; 
}; 

Любые идеи?

Редактировать: После загрузки страницы я хочу обновить данные при получении push-сообщения.

Edit 2: тестирование кода

data.js:

export class Data { 
    static information = ''; 
} 

viewModel.js

import {bindable} from 'aurelia-framework'; 
import { Data } from 'data'; 

export class ViewModel { 
    constructor() { 
     this.informaton = Data.information; 
    } 

    logState(){ 
     console.log("state of Data.information : " + Data.information); 
     console.log("state of this.information : " + this.information); 
    } 
} 

var connection = new WebSocket('ws://localhost:8787', 'json'); 
connection.onmessage = function (e) { 
    Data.information = e.data; 
    console.log("receiving a message : Data.information = " + Data.information); 
}; 

viewModel.html:

<template> 
    <span id="spanAff">${information}</span> 
    <br/> 
    <input type="button" value="log" click.trigger="logState()" /> 
</template> 

журналы:

"прием сообщения: Data.information = 4"
"состояние Data.information: 4"
"состояние this.information: неопределенные"

ответ

7

Я получил это решение на другом форуме:

export class ViewModel { 
    constructor() { 
    this.information = 'my val'; 
    var connection = new WebSocket('ws://localhost:8787', 'json'); 
    connection.onmessage = e => { 
     this.information = e.data; 
    }; 
    } 
} 
+0

ах да, это так просто, не так ли? :) Я обновил ваше решение. Им не нужен импортный импорт. Кроме того, вам не нужна переменная myModel, если вы используете функции стрелок. Попробуйте. –

+0

Спасибо за ваши исправления. Да, это действительно просто! – Seb

Смежные вопросы