0

angularjs バインド機能を試していました。「ng-app」タグ内にフォームタグがあるシナリオが1つありました

<form name="CollectMFPToEvaluate" >
    <input type="text" name="name" ng-model="risk.name" ng-show="false">

</form>

私のapp.jsファイルでは、名前フィールドの値を設定するために通常のjavascript関数を呼び出すファクトリを書いています

angularApp.factory('NameFactory', function(){
 return {
    bodyLoaded:function(){
       collectName();
    },
}; 
});

var collectName = function(){
    document.CollectMFPToEvaluate.name.value = "stackoverflow"; 
};

apps.js で自分のファクトリを呼び出した後、名前変数 app.js にアクセスしようとします

$scope.risk = {
        name : '',

};

NameFactory.bodyLoaded();
     alert("risk = "+$scope.risk.name);

アラートに「risk = stackoverflow」が出力されることを期待していますが、「risk =」が出力されます。もしそうなら、誰かが私を修正してください。

ありがとう

4

1 に答える 1

1

ビューの値を直接更新したので、ビューを更新した角度の世界に伝える必要があります。ファクトリで適用を実行すると、修正されるはずです。Angular Scopeを見てみましょう

angularApp.factory('NameFactory', function( $rootScope ){
   return {
      bodyLoaded:function(){
        $rootScope.$apply( collectName() );
      }
    }; 
});
于 2013-11-12T08:09:49.810 に答える