奇怪的视图属性导致骨干

时间:2012-09-21 10:03:23

标签: javascript backbone.js

我在骨干网上有一个视图,我想创建一些属性。

我做到了:

var ProgrammeDetailsView = Backbone.View.extend({

    $infoResult: $('#info-result'),
    $castingResult: $('#casting-result'),
    $broadcastResult: $('#broadcast-result'),
    $testResult: $('#test'),

[...]

我惊讶地得到了这个结果:

 console.log(this.$infoResult); -> Array { selector="#test", forEach=forEach(), reduce=reduce(), more...}

正如你所看到的,我使用了“this。$ infoResult”,它应该返回一个id为“#info-result”的对象,但它实际上是返回的最新变量。

如果我这样做:

var ProgrammeDetailsView = Backbone.View.extend({

    $infoResult: '#info-result',
    $castingResult: '#casting-result',
    $broadcastResult: '#broadcast-result',
    $testResult: '#test',

我没有问题,cf:

console.log(this.$infoResult); -> "#info-result"

你知道为什么吗?

1 个答案:

答案 0 :(得分:0)

在对象初始化时,您确定所引用的元素是否可用?很多时候,可能正在创建此对象的视图或包含它的HTML可能尚未修改DOM,因此您将无法获得对它的引用。