Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Angular и шаблоны (https://javascript.ru/forum/angular/57640-angular-i-shablony.html)

tall32 12.08.2015 19:54

Angular и шаблоны
 
Доброго времени суток.
Есть примерный код
json:
[ 
    {"name":"Nick"},
    {"sorname":"Deeper"}
]

angular:
.........
app.controller('Controller', ['$scope','$http', function($scope,$http) {
    $http.get('file.json').success(function (data)
    {
        ..........
        $scope.name = data.name;
        ..........
        $scope.sorname = data.sorname;
        ..........
     }
        .........
}])
.directive('myCustomer', function() {
return {
                template: "{{name}}<br>{{sorname}}"
          };
});

Cначала загружаетя шаблон, потом затем загружается файл json и т.д.

Вопрос как сделать код так что бы загружался ОДИН json файл в котором был бы шаблон и прочие параметры....вот как пример:

пример:
json:
[ 
        {"tpl":"{{name}}<br>{{sorname}}"},
        {"name":"Nick"},
        {"sorname":"Deeper"}
]


angular:
.........
app.controller('Controller', ['$scope','$http', function($scope,$http) {
        $http.get('file.json').success(function (data)
        {
                app.directive('myCustomer', function() {
                return {
                           template: data.tpl
                }

        };
        ..........
        $scope.name = data.name;
        ..........
        $scope.sorname = data.sorname;
        ..........
        }
        ..........
}])

});


Уже перерыл кучу доков...вроде почти понял..но не понял)))....или вообще так нельзя сделать?...подскажите хотя бы куда копать?))

В заранее спасибо))...

ksa 13.08.2015 10:23

Цитата:

Сообщение от tall32
как сделать код так что бы загружался ОДИН json файл в котором был бы шаблон и прочие параметры

Никак.
Создание шаблона декларативно. Оно разумеется может зависеть от данных... Но подгружать его в json файле вместе с данными модели? :blink:

tall32 13.08.2015 20:23

Разобрался вроде...

пример: //тут могут быть ошибки так как я упростил код. Но примерно выглядит так

Angular:
var phonecatApp = angular.module('myyApp', []);

phonecatApp.config(function($controllerProvider, $compileProvider, $filterProvider, $provide) {
  phonecatApp.register = {
    controller: $controllerProvider.register,
    directive: $compileProvider.directive,
    filter: $filterProvider.register,
    factory: $provide.factory,
    service: $provide.service
  }; 
});

function reg (obj,text) {
	phonecatApp.register.controller(obj, function ($scope) {
		  	$scope.text = text;
        )};
};

phonecatApp.directive('myDir',['$http','$compile', function($http,$compile) { 
      return  function(scope, element){
         	$http.get('file.json').success(function(data) { 
                       //registration of controllers					
                       regCtrl(data[1].objName,data[1].text);
                       regCtrl(data[2].objName,data[2].text);

                       //getting template
                       var tpl = data[0].tpl; 

                       //create an angular element. (this is our "view")		        			        
                       var el = angular.element(tpl);	
                       //compile the view into a function.	
                       var compiled = $compile(el);
                       //append our view to the element of the directive.      		            			       
                       element.append(el);	  		        		        
                       //bind our view to the scope! 
                       compiled(scope);
			});  
        }
}]);


json:
[
	{"tpl":"<div ng-controller='italic'><i>{{text}}</i></div><div ng-controller='bold'><b>{{text}}</b></div>"
	},   
	{
		"objName": "italic",
		"text": "Этот текст написан курсивом"
	},
	{
		"objName": "bold",
		"text": "Этот текст жирный"
	}
]


HTML:
<body ng-app="myyApp"> 
<div my-dir></div>
</body>

Shitbox2 13.08.2015 23:00

Не знаю для чего это нужно, но по всей видимости стоит взглянуть на cacheFactory в т. ч. templateCache

tall32 14.08.2015 06:53

Хорошо, посмотрю.


Часовой пояс GMT +3, время: 08:55.