2016-04-09 2 views
1

私は奇妙な振る舞いをしています。奇妙な振る舞いの範囲とng-repeatの表示、角度JS

<div class="form-group"> 

    <select class="form-control" name="name" id="repeatSelect" ng-model="selectedOption"> 
    <option ng-repeat="o in availableOptions" value="{{o}}">{{o.name}}</option> 
     </select> 
    </div> 
<p>{{selectedOption}}</p> 
<p>{{selectedOption.value}}</p> 

コントローラに私が持っている:私は以下のコードを有する鑑み

$scope.availableOptions= [ 
    {id: '1', name: 'name2', value:{w: 100, h: 250}}, 
    {id: '2', name: 'name1', value:{w: 200, h: 100}}, 
    ]; 
$scope.selectedOption = $scope.availableOptions[1]; 

問題は以下である:最初の時点で最初の二つ<p>(selectedOptionとselectedOption.value)が正しく表示されています。しかし、私が選択した値を変更するときは、が表示され、<p>{{selectedOption.value}}</p>は何も表示されません。

ヘルプ?

PD:ng-optionを選択しても機能しましたが、なぜng-repeatでないのですか?

+0

いくつか出力コードやコンソールログを提供できますか? – theblindprophet

答えて

2

唯一の説明は、それが文字列にオブジェクトを変更するということでした。あなたの周りの作業は行うことができ、このような選択と機能が見て何かにng-change="foo(selectedOption)"を作成している:我々は値を文字列に変換されていることを確認することができ、ここから

$scope.foo = function(val){ 
    $scope.selectedOption = angular.fromJson(val); 
} 

EDIT

http://www.w3schools.com/tags/tag_option.asp

+0

はい、うまくいくが、これは最善の解決策ではない。あなたはこの行動が何であるか知っていますか? –

+1

http://www.w3schools.com/tags/tag_option.aspここから、valueタグがテキスト値を返すことがわかります。これは、文字列を返すため、 '{{selectedOption.value}}'が動作しない理由です。 – Konkko

+0

あなたは正しいですが、問題は{{selectedOption.value}}が文字列を返すことです。したがって、私が選択した最良の選択肢は「ngSelect」です。 –

0

は、値の属性を変更してみてください:私は考えることができ

<div class="form-group"> 

    <select class="form-control" name="name" id="repeatSelect" ng-model="selectedOption"> 
    <option ng-repeat="o in availableOptions" ng-value="o.value">{{o.name}}</option> 
     </select> 
    </div> 
<p>{{selectedOption}}</p> 
<p>{{selectedOption.value}}</p> 
+0

それは仕事をしませんでした。まだ起こっていない。 –