特定のcallback
属性を分離スコープで使用するフォームディレクティブがあります。
scope: { callback: '&' }
それは内部にあるng-repeat
ので、私が渡す式にはid
、コールバック関数への引数としてオブジェクトのが含まれています。
<directive ng-repeat = "item in stuff" callback = "callback(item.id)"/>
ディレクティブを使い終えると、$scope.callback()
コントローラー関数から呼び出されます。ほとんどの場合、これで問題ありませんし、やりたいことはこれだけですが、場合によっては、directive
それ自体の内部から別の引数を追加したいこともあります。
これを可能にする角度式はありますか:$scope.callback(arg2)
、callback
で呼び出されarguments = [item.id, arg2]
ますか?
そうでない場合、これを行うための最も近い方法は何ですか?
これが機能することがわかりました:
<directive
ng-repeat = "item in stuff"
callback = "callback"
callback-arg="item.id"/>
と
scope { callback: '=', callbackArg: '=' }
ディレクティブ呼び出し
$scope.callback.apply(null, [$scope.callbackArg].concat([arg2, arg3]) );
しかし、私はそれが特にきちんとしているとは思いません、それは分離スコープに余分なものを置くことを含みます。
もっと良い方法はありますか?
ここにプランカー遊び場があります(コンソールを開いたままにします)。
ng
API と一致しています。たとえばng-click="someFunction()"
、関数の実行を評価する式です。
$scope.callback
は、ディレクティブ定義オブジェクトのcallback="someFunction"
属性とscope: { callback: '=' }
プロパティによって設定されています。$scope.callback
で後日呼び出される関数は。実際の属性値は明らかに文字列です-これは常にHTMLの場合です。