何らかの理由で、コードで定義された@$inputTestDiv
変数とisStringEmpty
メソッドにアクセスできませんbackbone.js
。$.ajax
成功方法以外で使用すれば問題なく使用できます。ここに私が気付いていないスコープの問題がありますか、それとも構文の問題ですか?ありがとうございました!
testapp.js.coffee
el = $('body')
TestApp.app.appView = new TestApp.code.views.AppView { el } if el.length
test_app.js.coffee
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");
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加