2013-07-10 28 views
2

據我所知,一個@observable變量或屬性將能夠與任何一個變化的值對應的HTML對應。Dart中可觀察函數的用途是什麼?

我不明白的是在一般和adlibitumexample@observable功能目的/意義:

@observable bool show() { 
    if (sillyword != '' && adjective != '' && 
     animal != '' && bodypart != '' && 
     verb  != '' && adverb != '') { 
    return true; 
    } else { 
    return false; 
    } 
} 

和HTML對應:

<template instantiate="if show()"> 
    <p>Dear Ms. {{sillyword}},</p> 

    <p>Little {{adjective}} Billy missed school 
    because he was sick with wild-{{animal}} flu. 
    His {{bodypart}} swelled up and fell off. 
    He can no longer {{verb}}.</p> 

    <p>Most {{adverb}} yours, Billy's mother</p> 
</template> 

而在什麼樣的的情況@observable功能我們eful?

回答

1

理論上,在show()函數之前的@observable函數確定<template>是否被激活。如果show()開始返回true,可能因爲sillyword,adjective等全部變爲非空字符串,則<template>將被激活。

是一般的原則,反正

但是,在這個具體的例子,中使用的所有字符串也被標記@observable

@observable String sillyword=''; 
@observable String adjective=''; 
@observable String animal=''; 
@observable String bodypart=''; 
@observable String verb=''; 
@observable String adverb=''; 

這使得@observable聲明show()不必要之前。如果您刪除特定的@observable,則代碼仍然有效。

+0

我測試過'@ observable'方法,沒有'@ observable'字段,它不會對返回值的變化做出反應。 –

+0

這是正確的@PixelElephant。如果這些字段是可觀察的,則該方法不必是可觀察的,但是如果這些字段不可觀察,但該方法是可觀察的,則不會發生動態綁定。 –

+0

那麼看起來沒有必要標記可觀察的方法嗎? –

相關問題