1

我无法理解 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”中找到视图

4

1 回答 1

2

您的代码中有几个问题。

  • Ember.Application 应位于大写名称空间中(请参阅Emberist 博客)。
  • 您必须将视图类传递给 #view 助手,而不是实例(因此您必须替换Ember.View.createEmber.View.extend.
  • 您编辑的脚本clientIP不起作用,因为现在FileUploader.app.userDetailsView是一个类。您可以使用didInsertElementEmber.View 方法做同样的事情。
  • 在您的模板中,您必须view.clientIP根据View Context Changes指定。

现在这个 JSFiddle 工作

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>
于 2012-08-27T14:20:57.413 回答