javascriptグリッドライブラリslickgridのディレクティブがあります。
http://plnkr.co/edit/KWZ9i767ycz49hZZGswB?p=preview
私がやりたいのは、選択した行をコントローラーに戻すことです。したがって、('='を使用して)分離スコープを使用して、コントローラーとディレクティブの間で双方向バインディングを機能させたいと思います。
スコープ宣言を一切行わずにディレクティブを定義すると、すべてが機能します。
<slickgrid id="myGrid" data="names" selected-item="selectedItem"></slickgrid>
app.directive('slickgrid', function() {
return {
restrict: 'E',
replace: true,
//scope: {
// selectedItem: '='
//},
template: '<div></div>',
link: function($scope, element, attrs) {
...
var redraw = function(newScopeData) {
grid.setData(newScopeData);
grid.render();
};
$scope.$watch(attrs.data, redraw, true);
しかし、上記の行(app.jsの19〜21行目)のコメントを外すと、attrs.dataオブジェクトを監視している$scope。$watchがredrawを呼び出しているように見えますが、attrs.dataは未定義として渡されています。
私の分析は間違っている可能性がありますが、スコープを定義することがなぜこれを引き起こすのかわかりません。誰かがそれがなぜかもしれないのか説明できますか?
.nathan。