У меня есть любопытный случай, что я не могу понять ...Угловая Директива шаблона не привязывается к угловым переменным контроллера
У меня есть директивы на мое приложение следующим образом:
app.directive('cartTotal', function() {
return {
template: "<i ui-sref='cart' class='fa fa-shopping-basket'></i><span class='items'>@{{cartQTotal.total}}</span>"
};
});
Когда я загружаю страницу, срабатывает эта функция:
if(localStorage.getItem("cart") != null)
{
console.log("makeacart");
var cart = JSON.parse(localStorage.getItem("cart"));
$scope.cartQTotal.total = 0;
for(i=0;i<cart.length;i++)
{
$scope.cartQTotal.total += cart[i].cartQ;
}
$('.fixed-cart').animateCss('bounce');
}
Это работает.
Но если я изменяю $ scope.cartQTotal за пределами этого, например, в функции (еще в родительском контроллере, но полученный из ng-click()
), например:
$scope.add2Cart = function(name){
var cart = JSON.parse(localStorage.getItem("cart"));
for(var zz = 0;zz<cart.length;zz++)
{
if(cart[zz].item == name)
{
console.log("already in cart");
$('.fixed-cart').animateCss('bounce');
return;
}
}
cart.push({item:name,cartQ:1});
localStorage.setItem("cart", JSON.stringify(cart));
console.log("makeacartii");
$scope.cartQTotal.total = 0;
for(i=0;i<cart.length;i++)
{
$scope.cartQTotal.total += cart[i].cartQ;
}
console.log($scope.cartQTotal.total);//THE NUMBER I WANT
$('.fixed-cart').animateCss('bounce');
}
На //The Number I Want
линии я получаю правильный число, так как в переменной правильно, но мой шаблон директивы не обновляется. Я не понимаю, почему нет.
Пожалуйста, помогите.
Редактировать (из документации):
Соблюдения директивы, такие как двойные фигурные выражения выражения {{}}, регистра слушателей с использованием метода $ часов(). Этот тип директивы должен быть уведомлен всякий раз, когда выражение изменяется, чтобы оно могло обновить представление.
Так что, я думаю, вопрос в том, как правильно сообщить директиву?
EDIT 2:
Глядя на него, используя расширение nginspector, оказывается, у меня есть две области с cartQTotal
, а не один, это остается постоянной или нет я директиву.
Я очень смущен, потому что у меня есть область моего контроллера, а затем дублирующаяся область со всеми теми же переменными, но cartQTotal изменяется в одной области, а не в другом. Почему у меня есть дублируемая, но неназванная область управления?
Я не думаю, что это правильно, я не пытаюсь, чтобы данные были обработаны в директиве, переданной родительской, я пытаюсь, чтобы область родительского (контроллера) спустилась к ребенку, она уже делает это просто не происходит в некоторых частях кода (см. выше). Также, когда я использую ваш '=' для двусторонней привязки, я получаю нулевое значение. –