Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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方法可用于其他主干方法?_Javascript_Backbone.js_Coffeescript - Fatal编程技术网

如何使我的javascript方法可用于其他主干方法?

如何使我的javascript方法可用于其他主干方法?,javascript,backbone.js,coffeescript,Javascript,Backbone.js,Coffeescript,由于某些原因,我无法访问backbone.js代码中定义的@$inputTestDiv变量和IsString方法。如果我在$.ajax成功方法之外使用它,我可以很好地使用它们。这里是否存在我不知道的范围界定问题,还是语法问题?谢谢大家! testapp.js.咖啡 test_app.js.coffee 这是@赋值的问题,或者JavaScript中的问题:在成功回调中,这不是视图对象,因为回调是直接调用的,不是视图对象的属性,也不是绑定函数 要做到这一点,请看一看 或者,您可以指定self=thi

由于某些原因,我无法访问backbone.js代码中定义的@$inputTestDiv变量和IsString方法。如果我在$.ajax成功方法之外使用它,我可以很好地使用它们。这里是否存在我不知道的范围界定问题,还是语法问题?谢谢大家!

testapp.js.咖啡

test_app.js.coffee


这是@赋值的问题,或者JavaScript中的问题:在成功回调中,这不是视图对象,因为回调是直接调用的,不是视图对象的属性,也不是绑定函数

要做到这一点,请看一看


或者,您可以指定self=this或一个更有意义的名称,可能是在调用$.ajax之前查看,并在成功回调中用所述变量替换@。

这肯定是范围问题。您必须按如下方式使用:

doSomething: =>
    var self = this;
    $('input#test_div').append("WORKS") if @isStringEmpty("test") #this works
    $.ajax
        type : 'GET'
        dataType : 'json'
        url : '/users'
        success: (result) ->
             if self.isStringEmpty(result) 
                self.$el.find('#inputTestDiv').html("YES");
class TestApp.code.views.AppView extends Backbone.View

  events:
    'click a#test_btn' : 'doSomething'

  initialize: ->
    @setupElements()

  setupElements: ->
    @$inputTestDiv = @$el.find 'input#test_div'

  isStringEmpty: (str) ->
    str.trim().length == 0

  doSomething: =>
    $('input#test_div').append("WORKS") if @isStringEmpty("test") #this works
    $.ajax
      type : 'GET'
      dataType : 'json'
      url : '/users'
      success: (result) ->
        if @isStringEmpty(result) # browser can't find isStringEmpty method
          @$inputTestDiv.html("YES") # browser says @$inputTestDiv is undefined
doSomething: =>
    var self = this;
    $('input#test_div').append("WORKS") if @isStringEmpty("test") #this works
    $.ajax
        type : 'GET'
        dataType : 'json'
        url : '/users'
        success: (result) ->
             if self.isStringEmpty(result) 
                self.$el.find('#inputTestDiv').html("YES");