在我的HTML,我嘗試做以下我怎樣才能連接兩個變量,包含整數,與angularjs?
{{firstvar + secondvar | myFilter}}
但是我的過濾器中它只是及彼第二個變量。我如何將這兩個變量連接起來發送給過濾器?
UPDATE
這是奇怪的,如果我添加一個空字符串,以它的工作中,
{{firstvar + "" + secondvar | myFilter}}
雖然它似乎應該有一個更好的解決方案
在我的HTML,我嘗試做以下我怎樣才能連接兩個變量,包含整數,與angularjs?
{{firstvar + secondvar | myFilter}}
但是我的過濾器中它只是及彼第二個變量。我如何將這兩個變量連接起來發送給過濾器?
UPDATE
這是奇怪的,如果我添加一個空字符串,以它的工作中,
{{firstvar + "" + secondvar | myFilter}}
雖然它似乎應該有一個更好的解決方案
我有一種預感,這是不適合你的工作,因爲你在這裏使用的不是字符串的數字。角度爲{{...}}
的語法允許我們描述一個我們想在角度摘要DOM時評估的JavaScript表達式。這裏的關鍵是角度正在使用(幾乎)與在普通的舊JavaScript表達式中使用的規則相同的規則來評估表達式。你可以看到這條規則的注意事項here。
爲了說明這一點,讓我們想象一下:
var firstvar = 1;
var secondvar = 2;
現在,考慮到我們剛剛分配到firstvar
和secondvar
值,你會我們預計在下面的表達式中result
價值是什麼?
var result = firstvar + secondvar
那麼,既然我們知道這些都是數字,明顯的答案是result
等於3(1 + 2 = 3,太神奇了!)。
這裏的關鍵是,當JavaScript引擎評估{{ firstvar + secondvar | myFilter }}
時,它會看到兩個數字,而不是兩個字符串。因此使用+
運算符將導致加上而不是字符串連接。
至於爲什麼你沒有在你的過濾器中獲得正確評估的表達式值,我不確定。從我的快速測試和通過angular documentation的瀏覽,我無法找到你有這個問題的原因。使用過濾器的語法是:
{{ expression | filter }}
因此,任何有效的JavaScript表達式(下文角的rules)應該工作。換句話說,你在上面發表的表達完全有效。事實上,在我自己的闖入者中,我創造了一個與你所描述的相似的情況,而我沒有看到任何問題。它按照預期評估表達式,我在myFilter
:example plunker中看到正確的值。
當您使用表達式{{ firstvar + "" + secondvar | myFilter }}
時,串聯工作的原因是因爲您的""
表達式正在創建一個空字符串對象。當JavaScript引擎看到+
與這個新的字符串對象結合時,它會嘗試序列化firstvar
和secondvar
(換句話說就是將它們變成字符串)。這會導致我想象的是您的原意,即將序列號的值連接爲firstvar
和secondvar
。在我看來,這是導致字符串連接的完全有效的方式,因爲結果相當於爲每個變量調用toString()
方法。如果你願意,你也可以直接調用每個變量的toString()
方法,像這樣:
{{ firstvar.toString() + secondvar.toString() | myFilter }}
這基本上是等價的,不過你避免了空字符串對象的創建不必要的。
因此,簡而言之,可以使用這兩種表達,實現了字符串連接:
{{ firstvar + "" + secondvar | myFilter }}
{{ firstvar.toString() + secondvar.toString | myFilter }}
當然,這是所有假設使用的是比string
之外的類型(在這種情況下沒有序列化將是必要的,它已經是一個字符串!)無論如何,希望這清除了一些事情。
我相信你在這是正確的。出於某種原因,它應該發生在我身上,它將像javascript一樣將它們加在一起。我假設括號內的所有變量將被視爲字符串,如果我使用+。 – Metropolis
您是否已試過這個
{{(firstvar + secondvar) | myFilter}}
?
我會自己做,但我現在沒有AngularJS環境可用,Sry。
是的,我也試過,也 – Metropolis
嘗試$parent.$eval(firstvar+secondvar)
看起來很有前途,但它的過濾器中返回undefined。我也嘗試過沒有父母。 – Metropolis
嘗試'$ parent。$ eval('firstvar + secondvar')'? –
不,那剛剛返回第二個變量 – Metropolis
似乎爲我工作:http://plnkr.co/edit/lqN6OGpavfPaR4VwsERe?p=preview可以請你發佈一個顯示問題的重擊者嗎? – haimlit
firstvar和secondvar的值是什麼? –
@JasonGoemaat他們是整數。可能爲什麼haimlit的工作 – Metropolis