2015-07-28 3 views
0

значение устанавливается в ложь первоначально в контроллереngModel значение не отражается на вид - изменить в директиве

$scope.isChangeUnsaved = false; 

значение с точки зрения

 Changes Status : {{isChangeUnsaved }} // false initially 

я пытаюсь изменить значение ngModel в директиве. значение изменяется, но оно не отражается на представлении. Вот мой код я использую

 <form ngc-reload ng-model="isChangeUnsaved"> 

директива

angular.module("biApp").directive("ngcReload", ["$parse","$log", function ($parse,$log) { 
return { 
    restrict: "A", 
    scope: { 
     ngModel:"=" 
    }, 
    link: function(scope, element, attrs, controller){ 
     $JQ(".mainmenu a").click(function(e){ 
      e.preventDefault(); 
      scope.$apply(function() { 
        scope.ngModel = !scope.ngModel; 
       });  
      console.log("scope.ngModel",scope.ngModel); // Outputs true - value is changed 
     }); 
    } 
} 
}]); 

значение не изменилось

   Changes Status : {{isChangeUnsaved }} // false even after changed in directive 
+0

Попробуйте изменить «ngModel» на другое слово. Я думаю, что «ngModel» является зарезервированным словом в рамках –

+0

@Pilot .. он не работает. ngModel уже имеет hasChangeUnsaved, переданный из атрибута директивы –

+1

Плохая идея, помещая изолированную директиву scope в тег формы. Могут возникнуть серьезные проблемы с 'ng-form', который является сложной директивой. Почему вы также используете 'ng-model'? Это не имеет никакого смысла – charlietfl

ответ

1

Попробуйте

 angular.module("biApp").directive("ngcReload", ["$parse","$log", function ($parse,$log) { 
return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function(scope, iElement, iAttrs, ngModel) { 
     $JQ(".mainmenu a").click(function(e){ 
     e.preventDefault(); 
     ngModel.$setViewValue(true); 
     ngModel.$render(); 
     }); 
    } 
} 

}]);

Смежные вопросы