(ember.js) Получите возвращение имущества для привязки.

StackOverflow https://stackoverflow.com/questions/8845666

  •  27-10-2019
  •  | 
  •  

Вопрос

Кодекс из официального введения Ember.js:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title></title>
</head>
<body>
<script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="ember-0.9.3.js"></script>
<script type="text/javascript">
    var App = Ember.Application.create();

    App.president = Ember.Object.create({
        name: "Barack Obama"
    });

    App.country = Ember.Object.create({
        presidentNameBinding: "App.president.name"
    });

    App.country.get("presidentName");
</script>
</body>
</html>

Я пытался отобразить возвращаемое значение App.country.get("presidentName");, поэтому я завершил его предупреждением, но оповещение всегда отображает undefined. Анкет Проводная часть - если я выполняю этот оператор в консоли Firebug, она правильно отображает, что "Barack Obama".

Официальное введение упомянуто:

Обратите внимание, что привязки не обновляются сразу. Ember ждет, пока весь ваш код вашего приложения не завершит работу перед синхронизацией изменений

Это причина, по которой я не могу получить значение связующего свойства в коде? Что на самом деле означает «код приложения завершил запуск»?

Это было полезно?

Решение

Когда вы играете с объектами с такими привязками, вы должны вручную запустить привязки для синхронизации с Ember.run.sync():

var App = Ember.Application.create();

App.president = Ember.Object.create({
    name: "Barack Obama"
});

App.country = Ember.Object.create({
    presidentNameBinding: "App.president.name"
});

Ember.run.sync(); // Manually sync bindings

alert( App.country.get("presidentName") );

Вот JSFiddle с примером: http://jsfiddle.net/ebryn/3ctns/

Другие советы

Вам нужно добавить наблюдателя, который по существу стреляет после начала начального кода приложения.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title></title>
</head>
<body>
<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="js/ember-0.9.3.js"></script>
<script type="text/javascript">
    var App = Ember.Application.create();

    App.president = Ember.Object.create({
        name: "Barack Obama"
    });

    App.country = Ember.Object.create({
        presidentNameBinding: "App.president.name"
    });

    App.country.addObserver('presidentName', function() {
        alert(App.country.get("presidentName"));
    });
</script>
</body>
</html>

Ищите «AddObserver» в Ember.js ВВЕДЕНИЕ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top