EmberJS无法找到视图异常

时间:2012-08-27 13:58:47

标签: javascript ember.js

我遇到了EmberJS的问题我无法理解

问题可以在jsfiddle中找到: http://jsfiddle.net/wLKKQ/

JS:

var fileUploader = [] || fileUploader;
fileUploader.app = Em.Application.create();

fileUploader.app.userDetailsView = Em.View.create({
    clientIP: null
});​

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <script type="text/x-handlebars">
        {{#view fileUploader.app.userDetailsView}}
            <h2>Hello Guest, your IP is: {{clientIP}}</h2>
        {{/view}}
    </script> 
    <script>
        $(function () {
            fileUploader.app.userDetailsView.set('clientIP', '::1');
        });
    </script>
</body>
</html>

我收到以下错误:

  

未捕获错误:断言失败:无法在路径'fileUploader.app.userDetailsView'找到视图

1 个答案:

答案 0 :(得分:2)

您的代码中存在多个问题。

  • Ember.Application应该是一个大写的命名空间(参见The Emberist blog)。
  • 您必须将视图类传递给#view帮助程序,而不是实例(因此您必须将Ember.View.create替换为Ember.View.extend
  • 编辑clientIP的脚本不起作用,因为现在FileUploader.app.userDetailsView是一个类。您可以使用didInsertElement Ember.View方法执行相同的操作。
  • 在模板中,您必须根据View Context Changes指定view.clientIP

现在this JSFiddle work

FileUploader = [] || fileUploader;
FileUploader.app = Em.Application.create();
FileUploader.app.userDetailsView = Em.View.extend({
    clientIP: null,

    didInsertElement: function() {
        this.set("clientIP", "::1");
    }
});​

HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <script type="text/x-handlebars">
      {{#view FileUploader.app.userDetailsView}}
         <h2>Hello Guest, your IP is: {{view.clientIP}}</h2>
      {{/view}}
    </script> 
</body>
</html>