2016-11-11 5 views
1

javascriptでangleの{{expressions}}とは異なる動作をする式があります。なぜ誰かが私に言うことができますか?角度式がコンソールと異なる方法で解決される

の式:JavaScriptで評価さ

(parseInt("12px")*2).toString()+"px" 

、それは24pxに解決されます。角張った表現では、それはNaNpxです。

jsfiddle

+0

あなたが最初の文字列から 'PX' を削除し、ちょうど最後にそれを連結する必要があります。 –

答えて

1

{{}} tellあなたの視点では、補間する式があります。角括弧はすべてのJavaScriptをサポートしているわけではありません。ドキュメンテーションチェックの場合here

JavaScriptがすべて必要な場合は、コントローラ機能にロジックをラップする方がよいでしょう。ドキュメントから

抜粋:角度が式を評価するためのJavaScriptのeval()を使用していない ので、

JavaScriptの式として角度ビュー式を考えると魅力的かもしれないが、それは完全に間違っています、 。あなたは は 以下の違いでJavaScript式として角度の表現と考えることができます:

は評価属性:すべての特性の評価は、評価をしてい 範囲に反対している、式がグローバルウィンドウに対して評価されている のJavaScriptとは異なり。

寛容:式の評価が未定義とnullを許している、 JavaScriptと異なり、未定義のプロパティを評価しようとするところで、 はReferenceErrorまたはTypeErrorを生成できます。

制御フローステートメントなし: 角式では、条件付き、ループまたはスローでは、次のいずれも実行できません。

0

あなたはその中のアルファベット文字で文字列を整数に解析しようとしているので、私は角度がリテラルそれを保つのに対し、Javascriptを、あなたのための文字を削除推測しています。

(parseInt("12")*2).toString() + "px"; 

正しい角度の構文になりますか。

0

$scopeparseInt機能を入れて動作させます。アンギュラ表現で

myApp.controller('MyCtrl', function($scope) { 
    $scope.parseInt = parseInt; 
    $scope.foo = function() { 
    return (parseInt("12px") * 2).toString() + "px"; 
    } 
}); 

は、機能ではなく、グローバル名前空間の $scopeからフェッチされています。ドキュメントから

  • コンテキスト: JavaScript式は、グローバルウィンドウに対して評価されています。 Angularでは、式はスコープオブジェクトに対して評価されます。

からAngularJS Developer Guide -- Expressions

DEMO on JSFiddle

関連する問題