Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AMD/Require.js模块中定义自定义属性,必要时从AMD/Require.js模块加载其他模块?_Javascript_Backbone.js_Requirejs_Amd - Fatal编程技术网

Javascript 在AMD/Require.js模块中定义自定义属性,必要时从AMD/Require.js模块加载其他模块?

Javascript 在AMD/Require.js模块中定义自定义属性,必要时从AMD/Require.js模块加载其他模块?,javascript,backbone.js,requirejs,amd,Javascript,Backbone.js,Requirejs,Amd,我正在尝试为中央控制器(实际上是主干视图)定义新属性,以使其更加分区和结构化。我试图通过if语句将我希望在不同情况下实现的渲染分离开来,并在这些新属性中实现每个情况的渲染。但在插入替换代码以实现这一点之后,以及在代码插入之前对代码进行注释,使我的应用程序无法工作 我做错了什么 我可以想象的另一种方式是,再次有条件地将我编写的不同AMD/Require.js modeule加载到一个单独的文件中,然后加载它们。但是怎么做呢?通过render:中的require()或通过传递给下面define()的

我正在尝试为中央控制器(实际上是主干视图)定义新属性,以使其更加分区和结构化。我试图通过if语句将我希望在不同情况下实现的渲染分离开来,并在这些新属性中实现每个情况的渲染。但在插入替换代码以实现这一点之后,以及在代码插入之前对代码进行注释,使我的应用程序无法工作

我做错了什么

我可以想象的另一种方式是,再次有条件地将我编写的不同AMD/Require.js modeule加载到一个单独的文件中,然后加载它们。但是怎么做呢?通过render:中的require()或通过传递给下面define()的第二个参数的新moduleName


render
方法中,调用
render\u app
render\u login
的替换代码实际上没有执行它们。您忘记了
()


综上所述,被遗忘的括号

1-render_应用程序和render_登录到render_应用程序()和render_登录()

2-纠正语法错误:render_login函数定义中的第二个括号


3-交换render_应用程序和render_登录属性名称或其匿名功能中使用的模板。它们互相使用。

但是我发送的代码有语法错误。关闭render login attributes Anonyman函数应该只有一个
}
有两个。与您的答案和另外一件事一起,render_应用程序和render_登录名应该互换。他们的实现加载了彼此的模板。在问题的开头,您提到此脚本在更改之前工作。所以我没有寻找像
}
这样的语法错误。if语句和方法的实现是您的特殊问题,您应该决定选择哪一个,而不是答案编写器。所以记住这些,请纠正你的语法和逻辑问题,删除你的补充答案,因为事实上它重复了我的答案。我的答案解决了这个问题。谢谢你的回答,但这还不足以使它起作用。当然,在替换我提到的代码时,我意外地在该位置添加了一个额外的括号,这与您建议的解决方案在代码中不是一种不同的问题。两者都是句法问题和解决方案。逻辑问题是另一个问题,可以是另一个答案,但又不像你的答案和我的两个答案那么完整。更重要的是,我的答案中提到你的答案不属于我。如果我删除我的答案,你的答案并不能解决问题,而这个问题是故意不回答的。如果我纠正了问题文本中的错误,我就破坏了问题,那么问题就不再是问题了。我可以纠正你指出的缺少括号的部分,但这在这里是难以接受的。这里是要保存和解决的问题和要保存的解决方案,而不是要保存、解决和删除的问题和解决方案。您的回答很受欢迎,也很有帮助。第二种和第三种情况只是复制粘贴代码时出现的语法错误,原因是在代码生效之前。第一个是主要问题。谢谢你参考我的答案。
define([
  'jquery',
  'ratchet',
  'underscore',
  'backbone',
  'models/login',
  'text!templates/login.html',
  'text!templates/app.html'

  ], function($, Ratchet, _, Backbone, LoginModel, LoginTmpl, AppTmpl){
      var LoginView = Backbone.View.extend({

          el: $("body"),

          template_login: _.template(LoginTmpl),
          template_app: _.template(AppTmpl),

          initialize: function(){
              this.model = new LoginModel;
              this.listenTo(this.model, 'change', this.render);
              this.render();
          },
        //Replacement code: two attributes:
          render_login: function(){
              this.$el.html(this.template_app( this.model.toJSON() ));
              console.log(JSON.stringify(this.model) );
              return this;
            }
          },
          render_app: function(){
              this.$("#content").html(this.template_login( this.model.toJSON() ));
              console.log(JSON.stringify(this.model) );
              return this;
          },
          render: function() {
            /*
            if (this.model.get('loginp') == true) { 
            this.$el.html(this.template_app( this.model.toJSON() ));
            console.log(JSON.stringify(this.model) );
            return this;                
            }
            */

            /*
            else {
            this.$("#content").html(this.template_login( this.model.toJSON() ));
            console.log(JSON.stringify(this.model) );
            return this;
            }
            */
            //Replacement code: 
            if (this.model.get('loginp') == true) {
                this.render_app;
            } else {
                this.render_login;
            }
          },

          events: {
              'click #loginbtn' : 'login',
              'click #registerbtn' : 'register'
          },

          login: function(e){
              e.preventDefault();
              var formData = {};

              $( 'input' ).each( function( i, el ) {
                    if( $(el).val() != '' ) {
                        if( el.id === 'username' ) {
                            formData[ el.id ] = $(el).val();
                        } else if( el.id === 'password' ) {
                            formData[ el.id ] = $(el).val();
                        }
                    }
                    console.log( i + ": " + $(el).val() );
                    console.log(JSON.stringify(formData) );

                    // Clear input field values
                    $( el ).val('');
                });
                this.model.save( formData );
            }
        });
        return LoginView;
});
if (this.model.get('loginp') == true) {
            this.render_app();
        } else {
            this.render_login();
        }