アプリケーションのロード後に DOM から初期データを取得する方法を探しています。サーバーによってデータがビューに挿入されました。Module
さんのvalue
方法は良い方法ですか?
で作業しているときにビューからデータを取得する方法を知りたいのですが、特定のスコープにデータを挿入するためにタグをroutes
使用できますか?script
アプリケーションのロード後に DOM から初期データを取得する方法を探しています。サーバーによってデータがビューに挿入されました。Module
さんのvalue
方法は良い方法ですか?
で作業しているときにビューからデータを取得する方法を知りたいのですが、特定のスコープにデータを挿入するためにタグをroutes
使用できますか?script
1)この質問に触発された最初の解決策であり、それはModule
のvalue
方法です:
<script>
var users_json = '[{"name":"Piotr"},{"name":"Natasha"}]'; // created by xsl
myApp.value("PrimaryData" , users_json );
</script>
<ul>
<li ng-repeat="user in users">{{user.name}}</li>
</ul>
次にPrimaryData
、次のように、いつでもどこでもこれを使用できます。
myApp.controller('MainCtrl', function($scope, PrimaryData) {
$scope.data = angular.copy(PrimaryData);
console.log( $scope.data[0].name === "John" );
});
しかし、この方法は、アプリケーションの初期化中にのみ実行routes
されるため、使用を開始したときに何とか機能しませんでした。value
2) 2 つ目の解決策はディレクティブです。サーバーがルートのテンプレートを送信すると、次のようscript
に、"text/template"
タイプと特別なディレクティブ名プロパティと json データを含むタグ内に配置されます。
<script type = "text/template" rawdata > <!-- "rawdata" is our directive
'[{"name":"Nelson"},{"name":"Luis"}]' // created by xsl
</script>
<ul>
<li ng-repeat="user in users">{{user.name}}</li> // view is beside
</ul>
そして、このディレクティブはそれをキャッチし、データを現在のルートのスコープに渡します:
studio.directive('rawdata', function() {
return {
link: function(scope, element, attr, ctrl) {
if(scope.passRawData){
var data = (element[0].innerHTML);
scope.passRawData(data); // Or simply scope.users = JSON.parse(data)
} else {
console.log( "Scope has no passRawData method" );
}
}
}
});
素晴らしい!:)