Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
one_time.js
var sample = angular.module('sample', []);
sample.controller('OneTimeController', function () {
this.name = 'John';
this.blah = 'sdflk';
});
index.html
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script type="text/javascript" src="one_time.js"></script>
</head>
<body ng-app="sample">
<div ng-controller="OneTimeController as test">
<p>Input something in the input box:</p>
<p>Name: <input type="text" ng-model="test.name" value="John"></p>
<p ng-bind="test.name"></p>
<p ng-bind="::test.name"></p>
<p ng-if="test.name && test.blah">testing</p> <!-- works perfectly-->
<p ng-if="::test.name && test.blah">testing with first expression as one time binded</p> <!-- works but the second property is not one time binded-->
<p ng-if="::test.name && ::test.blah">testing with one time bind</p><!-- doesn't work throws syntax error-->
</div>
</body>
</html>
Π― ΠΏΡΡΠ°ΡΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ΅Π³ <p>
Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ng-if, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ Ρ
ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ name Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. Π― ΡΠΆΠ΅ Π·Π½Π°Ρ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ
ΠΎΡΠ΅Π» ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΈ Π² ng-if. ΠΠ½ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ <p ng-if="::test.name && test.blah">testing with first expression as one time binded</p>
, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΡΠ°ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ-ΠΎΡ
ΡΠ°Π½Π½ΠΈΠΊ Π²ΡΠ΄Π°Π΅Ρ ΠΌΠ½Π΅ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΡΠΈΠ±ΠΊΡ:
Error: [$parse:syntax] Syntax Error: Token ':' not a primary expression at column 14 of the expression [test.name && ::test.blah && ::test.blah] starting at [::test.blah && ::test.blah].
http://errors.angularjs.org/1.3.14/$parse/syntax?
ΠΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΠ»ΠΈ Π½Π°ΡΡΠΎΡΡΠ°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°? Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ angularjs Π²Π΅ΡΡΠΈΠΈ 1.3.14.
Π― Π΄ΡΠΌΠ°Ρ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ()
Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: <p ng-if="::(test.name && test.blah)">testing with first expression as one time binded</p>
@piernik Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΠΌ. Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» (::test.name) && (::test.blah)
Π½ΠΎ ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ ΡΠ°ΠΌΡΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ::
Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ. : +1:
ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²Π°Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° (: :) ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎ Π²ΡΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Π² ng-if.
<p ng-if="::test.name && test.blah"> is same as <p ng-if="::(test.name && test.blah)">
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΠ΄Π½ΠΎΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π² angular js.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― Π΄ΡΠΌΠ°Ρ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
()
Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:<p ng-if="::(test.name && test.blah)">testing with first expression as one time binded</p>