How can I concatenate two variables, containing integers, with angularjs?
angularjs
Solution
I have a hunch that this isn't working for you because you are using numbers here instead of strings. The angular `{{...}}` syntax allows us to describe a JavaScript expression we want evaluated when angular digests the DOM. The key here is that angular is evaluating the expression using (nearly) the same rules that would be used in a plain old JavaScript expression. You can see the caveats to this rule here.
To illustrate this point, let's imagine:
var firstvar = 1;
var secondvar = 2;
Now, considering the values we just assigned to `firstvar` and `secondvar`, what would we expect the value in `result` in the following expression to be?
`var result = firstvar + secondvar`
Well, since we know these are both numbers, the obvious answer is that `result` equals 3 (1 + 2 = 3, amazing!).
The point here is that when the JavaScript engine evaluates `{{ firstvar + secondvar | myFilter }}` it sees two numbers, not two strings. So using the `+` operator will cause an addition not a string concatenation.
As far as why you aren't getting the correctly evaluated expression value inside your filter, I am not sure. From my quick testing, and from skimming through the angular documentation, I can't find a reason why you are having this issue. The syntax for using a filter is:
{{ expression | filter }}
So any valid JavaScript expression (that follows Angular's rules) should work. In other words, the expression you posted above is perfectly valid. In fact, in my own plunker, I created a similar situation to what you described and I am not seeing any issues. It is evaluating the expression as expected, and I see the correct value in `myFilter`: example plunker.
The reason the concatenation is working when you use the expression `{{ firstvar + "" + secondvar | myFilter }}` is because your `""` expression is creating an empty string object. When the JavaScript engine sees `+` in conjunction with this new string object, it attempts to serialize `firstvar` and `secondvar` (in other words turn them into strings). This results in what I would imagine was your original intent, that is to concatenate the serialized values of `firstvar` and `secondvar`. In my view this is a completely valid way of causing a string concatenation, as the result is equivalent to calling the `toString()` method for each variable. If you prefer, you could also call the `toString()` method for each variable directly like so:
{{ firstvar.toString() + secondvar.toString() | myFilter }}
This is essentially equivalent, except that you are avoiding the unnecessary creation of the empty string object.
So, in short, you can use either of these two expression to achieve a string concatenation:
{{ firstvar + "" + secondvar | myFilter }}
{{ firstvar.toString() + secondvar.toString | myFilter }}
Of course, this is all assuming that you are using a type other than `string` (in which case no serialization would be necessary, it's already a string!) Anyway, hope this clears some things up.
Problem
In my html I am trying to do the following ``` {{firstvar + secondvar | myFilter}} ``` However inside my filter it is only getting the second variable here. How can I concat these two variable to be sent to the filter? UPDATE This is weird, if I add an empty string to the middle it works, ``` {{firstvar + "" + secondvar | myFilter}} ``` Though it seems there should be a better solution