9

私の単一ページ アプリケーションには 2 つのコントローラーがあります。1 つ目はメイン メニュー用で、2 つ目はビュー用です。彼らはこの工場とデータを共有しています

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 実装に問題はありますか?

4

1 に答える 1

18

構文が間違っていました。returnサービス変数が必要です。また、オブジェクトの等価性をチェックするオブジェクトがないため、最終的にはMenuFactory.Control必要ありません。true

コード

$scope.$watch(function(){
   return MenuFactory.Control;
}, function(newValue, oldValue){
    console.log(newValue + ' ' + oldValue);
    console.log(MenuFactory.Control);
});
于 2015-06-02T12:40:08.167 に答える