Вот jsfiddle: https://jsfiddle.net/vikramkute/eq3zpmp9/5/
Я новичок в угловой. У меня есть объект, который должен быть добавлен во время выполнения в html. Я использую угловой 1.2.25
Ожидаемый выход является
1 Quest
2 Quest
3 Quest
, но я получаю повторяться последнее значение в три раза. Согласно моей проб и ошибок, я чувствую, что проблема связана с компиляцией $. Я пробовал разные решения на разных форумах, но ничего не получилось. Любая помощь очень ценится. Благодарю.
В директиве (в пределах функции связи)
scope.obj =
[
{
"questionText": "1 Quest"
},
{
"questionText": "2 Quest"
},
{
"questionText": "3 Quest"
}
]
scope.addData = function() {
for (var i = 0; i < scope.obj.length; i++) {
addSlide(scope.obj[i]);
}
}
addSlide = function (obj) {
scope.singleObj = obj;
el = $('<div ng-bind="singleObj.questionText"></div>');
scope.owl.append(el);
$compile(el)(scope);
};
Выход:
3 Quest
3 Quest
3 Quest
Вот полная директива:
angular.module('journeycarousel', [])
.directive('journeyCarousel', function ($compile) {
return {
restrict: 'E',
templateUrl: '../components/journeyCarousel/journeyCarousel.html',
transclude: true,
link: function (scope, element) {
scope.obj =
[
{
"questionText": "1 Quest"
},
{
"questionText": "2 Quest"
},
{
"questionText": "3 Quest"
}
]
scope.addData = function() {
for (var i = 0; i < scope.obj.length; i++) {
addSlide(scope.obj[i]);
}
}
addSlide = function (obj) {
scope.singleObj = obj;
el = $('<div ng-bind="singleObj.questionText"></div>');
scope.owl.append(el);
$compile(el)(scope);
};
}
}
});
Выше кода упрощенная версия. Это фактический код:
scope.singleObj = obj;
el = $('<div class="questionContainer" <div ng-repeat="obj in singleObj"> ng-click="onSlideClick($event,singleObj)"> <div class="item"> <div class="questionSection" ng-bind="singleObj.questionText"></div> <div class="answerSection" ng-bind="singleObj.questionAnswer + singleObj.questionUnitOfMeasure"></div> </div> </div>');
$('.owl-carousel').owlCarousel('add', el).owlCarousel('update');
$compile(el)(scope);
Показать полный код для директивы. –
использовать 'terminal: true' в вашей директиве –
pro.mean Я попробовал терминал: true. но не повезло. Если я добавлю $ ('. Owl-carousel'). Append (scope.singleObj.questionText); то я получаю 3 разных значения. но как-то компиляция $ берет последний. Я попытался отладить и обнаружил, что первый вызов имеет первое значение. второй вызов поставляется со вторым значением, но обновление как первого, так и второго места и третьего вызова обновит все 3 значения. – TechFreak