2017-03-29 4 views
-3

AngularJSでeval()がどのように機能するかを調べようとしています。

私は、次のしている

$scope.salaryRate, $scope.priceRate = { 
    number: undefined, 
    type: undefined, 
    from: undefined, 
    to: undefined, 
    rate: undefined 
} 

$scope.addRate = function (variable) { 
    eval('$scope.' + variable).push({ 
     'number': eval('$scope.' + variable + 'Rate').number, 
     'type': eval('$scope.' + variable + 'Rate').type, 
     'days': { 
     'days': eval('$scope.' + variable + 'SelectedDay'), 
     'daynames': displayDayNames($scope.dayNames, eval('$scope.' + variable + 'SelectedDay'))}, 
     'from': eval('$scope.' + variable + 'Rate').from, 
     'to': eval('$scope.' + variable + 'Rate').to, 
     'rate': eval('$scope.' + variable + 'Rate').rate, 
     'id': eval(variable + 'Number') 
    }); 
    eval('$scope.' + variable + 'Rate') = { 
     number: undefined, 
     type: undefined, 
     from: undefined, 
     to: undefined, 
     rate: undefined 
    }; 
} 

を、私は、変数、配列に値をプッシュしていたときにevalが正常に動作しますいくつかの理由。しかし、何らかの理由でeval('$scope.' + variable + 'Rate') =が動作しないため、エラーReferenceError: Invalid left-hand side in assignmentが発生します。 私は関数を動的にしようとしているので、複数の関数に使うことができます$scope。 AngularJSでこれをどのように解決できますか?

また、あなただけ​​使用することはありませんなぜ

function findRowIndex(variable, id){ 
    eval('var ' + variable + 'Rows') = eval('$scope.' + variable); 
} 
+2

なぜevalを使用していますか?いい考えではない。 – Phix

+2

なぜあなたはこれをやっていますか? – Pytth

+0

@Phix、どのように私は関数にスコープ名を入力し、与えられた変数名でスコープを変更できる動的な関数を作るでしょうか?というのは、変数名の他に、全く同じである同じ関数を使用する複数の$ scope配列を持っているということです。 – PhyCoMath

答えて

4

この時点で失敗するどうなりますか? https://jsfiddle.net/duoxoq8j/2/

$scope.addRate = function (variable) { 
    $scope[variable].push({ 
     ... 
    }); 
    $scope[variable + "Rate"] = { 
     number: undefined, 
     type: undefined, 
     from: undefined, 
     to: undefined, 
     rate: undefined 
    }; 
} 

これは単なる基本的なJavaScriptの機能であり、特定の角度やスコープとは何の関係もありません。

+0

このために私の$スコープを変更しますか? Uncaught SyntaxError:スコープを変更したときに予期しないトークン[''私はこれが存在することを知りませんでした... – PhyCoMath

+0

例のためにフィドルをチェックしてください –

+0

ニース!私はスコープの例で働いていました:)しかし何らかの理由で私の編集が途切れてしまいましたが、おそらくそれをデバッグして見つけることができます:)このようなスコープを使用できることを本当に知っていなかったので、ありがとうございます:) – PhyCoMath

関連する問題