質問編集履歴

1 バージョンを追加しました。

aoshima.natsuki

aoshima.natsuki score 31

2015/10/21 18:20  投稿

AngularJSでボタンを押すとフォーカスが当たるinputタグをつくりたい
質問させてください。Angularを用いて、ボタンを押すとフォーカスが当たるinputタグで試行錯誤しています。
技術書を参考に以下のようにdirectiveをつくり試しているのですが、エラー(elem.focus is not a function)がどうやっても消えず困っています... directiveは確かに呼ばれていてどうやら、jsの内容に問題がありそうなのですが特定できません... 初歩的な質問ですみません。どうかよろしくお願いします
質問させてください。Angularを用いて、
ボタンを押すとフォーカスが当たるinputタグで試行錯誤しています。
技術書を参考に以下のようにdirectiveをつくり試しているのですが、エラー(elem.focus is not a function)がどうやっても消えず困っています... directiveは確かに呼ばれていてどうやら、jsの内容に問題がありそうなのですが特定できません... バージョンは1.4.7を使っています。初歩的な質問ですみませんが、どうかよろしくお願いします
```javascript
-- app.coffee
window.App = angular.module('app', ['myInputFocus'])
```
```javascript
-- InputCtrl.coffee
App.controller 'InputCtrl', ($scope) ->
 $scope.focusOnInput = ->
   alert 'called.'
   $scope.focused = true
   return
```
```javascript
-- myInputFocus.js
angular.module('myInputFocus', []).directive('myInputFocus', function() {
 return {
   restrict: 'A',
   scope: { myInputFocus: '=' },
   link: function(scope, elem, attrs) {
     scope.$watch('myInputFocus', function(value) {
       if (value) { elem.focus(); }
     });
     elem.on('blur', function() {
       scope.$apply(function() {
         scope.myInputFocus = false;
       });
     });
   }
 };
});
```
```html
-- index.html
<div ng-controller="InputCtrl">
 <button ng-click="focusOnInput()">click me.</button>
 <input type="input" my-input-focus="focused">
```
  • JavaScript

    22113 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • AngularJS

    618 questions

    AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

  • CoffeeScript

    152 questions

    CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る