2016-06-23 4 views
0

特定のDOMオブジェクトのテキストを変更するにはどうすればよいですか?次のコードを試しましたが、すべてのDOMテキストが変更されました。 {b1}だけでなく、{{content}}の値もすべて変更されます。ここでDOMボタンの値を変更するには?

myfunc() { 
    $scope.content="nothing"; 
    angular.element(document.getElementById('b1')).scope().content ='something'; 
} 

はhtmlです:

<button id="b1" type="button" ng-click="myfunc($event)"> 
    {{content}} 
</button> 
<button id="b2" type="button" ng-click="myfunc($event)"> 
    {{content}} 
</button> 
+0

を、$のscope.contentうち、実際にあります関数ボックスの、その行を無視してください。問題は、上記のメソッドがクリック後に特定のDOM ID( 'b1')に適用できないこと、すべての$ scopeに適用され、すべてのボタン( 'b1'と 'b2')に変更を加えて '何か'。私は 'b2'が変わることを望んでおらず、「何も」にとどまっていない。 – Angbird

答えて

0

あなたはangular.elementを使用するか、またはどこか他のディレクティブに比べいかなるDOM操作を行うべきではありません。テンプレートについては

$scope.contents = Array(2).fill('nothing'); 

$scope.updateButton = function(index) { 
    $scope.contents[index] = 'something'; 
}; 

:あなたはここでやりたいことは、配列/オブジェクトとして$scope.contentsを定義し、あなたが望むだけのインデックス更新でBTW

<button type="button" ng-click="updateButton(0)">{{ contents[0] }}</button> 
<button type="button" ng-click="updateButton(1)">{{ contents[1] }}</button> 
+0

配列サイズが固定されていないため、このソリューションを実装できませんでした。ボタンの数はオンザフライで変化します。したがって、私はコントローラでそれを事前に定義することはできませんでした。そして、インデックス "i"は連続していないので、contents [i]配列を定義する方法はありません。私が操作できるのは、異なるボタンのDOMを表すボタンIDです。 – Angbird

+0

これは良い解決策です、ありがとう!唯一の欠点は、最初は比較的大きな配列サイズを定義しなければならなかったことです。 – Angbird

関連する問題