Наблюдайте переменную factory с Angular

В моем одностраничном приложении есть два контроллера: первый для моего главного меню, второй - для представления. Они обмениваются данными с этим factory

myApp.factory('MenuFactory', function(){
var factory = {
    Monitor: "doneJob",
    Control: "",
    Report: "",
    Display: "",
    setMonitor: function(value){
        factory.Monitor = value;
    },
    setControl: function(value){
        factory.Control = value;
    },
    setReport: function(value){
        factory.Report = value;
    },
    setDisplay: function(value){
        factory.Display = value;
    }

};
return factory;
});

Я хотел бы посмотреть изменение на factory.Control, но я не могу заставить его работать.

Когда я попробую это:

$scope.$watch(function(){MenuFactory.Control}, function(NewValue, OldValue){
    console.log(NewValue + ' ' + OldValue);
    console.log(MenuFactory.Control);
}, true);

Я получаю "undefined undefined" и "Process" в консоли. Есть ли проблемы с моей $watch реализацией для этого factory?

+6
источник поделиться
1 ответ

У вас был неправильный синтаксис. Это должно return служебная переменная MenuFactory.Control, и в конце концов нет необходимости true, поскольку у вас нет объекта для проверки равенства объекта.

код

$scope.$watch(function(){
   return MenuFactory.Control;
}, function(newValue, oldValue){
    console.log(newValue + ' ' + oldValue);
    console.log(MenuFactory.Control);
});
+14
источник

Посмотрите другие вопросы по меткам или Задайте вопрос