Я очень стараюсь, чтобы моя голова была вокруг angularJS и директив.
У меня есть существующие службы REST, который выводит данные в формате JSON следующим образом (отформатированные для удобства чтения):
{"ApplicationType":
["Max","Maya","AfterEffects","Nuke","WebClient","Other"],
"FeatureCategory":
["General","Animation","Compositing","Management","Other"],
"FeatureStatus":
["Completed","WIP","NotStarted","Cancelled","Rejected","PendingReview"],
"BugStatus":
["Solved","FixInProgress","NotStarted","Dismissed","PendingReview"]}
Я тогда услугу (который, кажется, работает правильно), чтобы получить эти данные, которые я хочу вводите в мою директиву.
(function() {
'use strict';
var enumService = angular.module('enumService', ['ngResource']);
enumService.factory('Enums', ['$resource',
function ($resource) {
return $resource('/api/Enums', {}, {
query: { method: 'GET', cache: false, params: {}, isArray: false }
});
}
]); })();
Мои намерения использовать данные из ответа JSon связываться с селектором HTML «Параметры» для целей сохранение данных в соответствии между кодом позади REST службы и угловой (то есть. Данные в формате JSON является . описания сильно типизированных данных модели из C#, например Enum.GetNames (TypeOf (ApplicationType)))
projMgrApp.directive('enumOptions', ['Enums',
function (Enums) {
return {
restrict: 'EA',
template: '<option ng-repeat="op in options">{{op}}</option>',
scope: {
key: '@'
},
controller: function($scope) { },
link: function (scope, element, attrs) {
scope.options = Enums.query(function (result) { scope.options = result[scope.key]; });
}
};
}
]);
предполагаемое использование было бы использовать следующим образом:
<label for="Application" class="control-label col-med-3 col">Application:</label>
<select id="Application" class="form-control col-med-3 col pull-right">
<enum-options key="ApplicationType"></enum-options>
</select>
, который затем выдает все варианты, соответствующие моим перечням C#.
В этом случае представляется, что директива никогда не вызывается при использовании тега.
Примечание. Я предполагаю, что завод работает нормально, так как я могу ввести его в отдельный контроллер, и он работает так, как ожидалось.
, что ваше сообщение об ошибке? – AlainIb
Не удалось создать модуль projMgrApp из-за: Ошибка: [$ compile: baddir] http: //errors.angularjs.org/1.5.0/$compile/baddir? P0 = Enum ... при ошибке (native) в http: // localhost: 3240/lib/angular/angular.min.js: 6: 416 – xxdefaultxx
https://docs.angularjs.org/error/$compile/baddir Директивы должны начинаться с символов нижнего регистра и не должны содержать ведущие или завершающие пробелы. – AlainIb