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