2016-08-18 22 views
0

Angularとng-styleで動作するようにjqueryサイズを変更することはできません。私は、サイズ変更可能な要素を作成するときに高さと幅を指定する必要があることを理解していますが、下のjsfiddleからわかるように、ngスタイルは無視され、高さや幅は適用されません。jQuery Angular ng-styleでサイズ変更ができません

<div ng-controller="myCtrl"> 
    <img resizable src="http://lorempixel.com/400/200/" 
    ng-style="{'width':'400px', 'height':'200px'}"/> 
</div> 

http://jsfiddle.net/85my1qbc/3/

、しかし、私はスタイルでNGスタイルを交換した場合、それは(以下のように)正常に動作

<div ng-controller="myCtrl"> 
    <img resizable src="http://lorempixel.com/400/200/" 
    style="width:400px;height:200px"/> 
</div> 

http://jsfiddle.net/go1qak0w/1/

私は周りに取得することができますどのように任意のアイデアこの?

答えて

1

ディレクティブにngStyleを渡し、ディレクティブにcssを設定します。

app.directive('resizable', function() { 
    return { 
     restrict: 'A', 
     scope: { 
      callback: '&onResize', 
      ngStyle : '=ngStyle' 
     }, 
     link: function postLink(scope, elem, attrs) { 

      elem.css(scope.ngStyle); 
      elem.resizable(); 
      elem.on('resizestop', function (evt, ui) { 
       if (scope.callback) { scope.callback(); } 
      }); 
     } 
    }; 
}); 

理由:ディレクティブのサイズ変更がコンパイルされると、要素の幅と高さはゼロになります。これは、resizableディレクティブでelem.css( 'width')を呼び出すことで確認できます。

Check the updated fiddle here

+0

これは、おかげで素晴らしいです。 ng-style = "getLayerStyle(sceneLayer)"のようにすると、ng-style = "{'width': '280px'、 'height': '180px'}」と完璧に動作しますが、問題が発生します – Flame1845

+0

関数がjsonオブジェクトを返すので、私は何の問題もないと思います。関数を持つngstyleで問題を再現しようとしましたが、うまく機能しました。ここでは[jsfiddleへのリンク](http://jsfiddle.net/Netdeamon/85my1qbc/11/) – Netdeamon

1

通常ngのスタイルの値がスコープ変数$scope.myStyle = {'width':'400px', 'height':'200px'}になり、あなたが

<div ng-controller="myCtrl"> 
    <img resizable src="http://lorempixel.com/400/200/" ng-style="myStyle"/> 
</div> 
ngStyle

で変数を使用することができます参考: ngStyle

+0

それはタイプミスです...あなたがフィドルをチェックすると、私は引用符で正しい構文を使用することがわかります。私の実際のコードでは、スコープ変数を使用していますが、簡単にするためにインラインで作成しました。私はこれが違いを生むべきだとは思わない。何か案は? – Flame1845

+0

@ Flame1845私の答えを編集 – Shafeeque

+0

私はスコープ変数を使用する場合、または私はスタイルのインライン、右を書く場合は、違いはありませんか? – Flame1845

関連する問題