2016-06-13 7 views
1

ng-initの値をjsonオブジェクトの入力にバインドしようとしています。jsonオブジェクトからng-initコードを追加する

しかし、私は「構文エラー:トークン」がどこに間違っているのですか?

$scope.obj = { init: 'obj.value = obj.value || 20' }; 

Plnkr:代わりにng-init

<form name="someformname"> 
    <input type="text" name="someinputname" ng-model="obj.value" ng-required="{{obj.init}}" /> 
</form> 

http://plnkr.co/edit/nmaxLvbqijXPBKoaQTUQ?p=preview

+0

中かっこを削除するだけです。それは動作するはずです –

答えて

0

使用ng-requiredはそれが役立ちます:)

+0

私のコードでこれを使用することはできませんが動作します。 – user1184100

+0

なぜこれは使えませんか? – Thinker

0

はの値を変更する関数としてのinitを考えてみホープobj。

$scope.obj = { 
    init: function(){ 
      $scope.obj.value = $scope.obj.value || 20; 
     } 
}; 

<input type="text" name="someinputname" ng-model="obj.value" ng-init="obj.init()" /> 

次のコード試すことPlunker

+0

しかし、入力フィールドの値はデフォルトで20に設定されていません。 – user1184100

0

を参照してください:

HTML

<input type="text" name="someinputname" ng-model="obj.value" ng-init="loadObj()" /> 

JS

$scope.obj = { 
    value: null 
}; 

$scope.loadObj = function() { 
    $scope.obj = { 
     init: { 
      value: $scope.obj.value | 20 
     } 
    }; 

    $scope.obj = $scope.obj.init; 

} 
0123を
0

それは、この方法を行うことができます。

ng-init="$eval(obj.init)" 

PLUNK

ng-initは内部でこの行いますscope.$eval(attrs.ngInit)をするので、上記の式は、この方法を実行されます:

式を実行
scope.$eval('$eval(obj.init)') 

に格納されています。

scope.$eval('obj.init') 

単にの値を返しますが、、それを実行しません:

は、単にそれが次の呼び出しにつながるので、中括弧は、コメントで示唆されているように、動作しません取り除きます!

関連する問題