回答編集履歴

1

後半部加筆

2016/11/30 14:53

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -146,17 +146,19 @@
146
146
 
147
147
 
148
148
 
149
- AngularJS決め打ちで回答しますが、
149
+ AngularJSのバージョン1決め打ちで回答しますが、
150
150
 
151
151
  この時のScopeは基本的にthisで使う事が前提です。
152
152
 
153
153
 
154
154
 
155
- 以下はテンプレートでバインドされた`title`を使う方法
155
+ 以下はテンプレートでバインドされた`title`を使う方法です。
156
156
 
157
157
  リンクをクリックするとAjax通信を行い、コールバック関数の中身から`this.title`を書き換えるテクニックのサンプルを用意しました。
158
158
 
159
+ この時無名関数という事でコールバック関数に作ったばかりの使い捨ての関数をあてがいますが、そのときにスコープが変わるので`this.title`にアクセス出来なくなります。
160
+
159
- 一度`self`に突っ込んで、別スコープにアクセスするテクニックは必須です。
161
+ そこで下記のように一度`this`を`self`に突っ込んで、別スコープにアクセスするテクニックを覚えておくと捗ります。
160
162
 
161
163
 
162
164
 
@@ -184,7 +186,9 @@
184
186
 
185
187
  $http.get("/title").success(function(results){
186
188
 
189
+ this.title = results.data; // NG、ここに突っ込んでもスコープが違うので上書きできない
190
+
187
- self.title = results.data;
191
+ self.title = results.data; // OK
188
192
 
189
193
  // $scope.title = results.data; // これでもOK
190
194