0

モデル/ビューが更新されていないことについて話している投稿を多数見つけましたが、まだこれを理解できません。私はAngularが初めてなので、これはnoobの問題だと思います。

以下のAngularアプリがあります。

テキスト入力test_varが編集されると、編集された値はサイドバーでは更新されませんが、ビューには表示されます。なぜ、どうすれば修正できますか?

これは、ビューとルートを使用しない場合に機能します。

サイドバーコントローラーを試しましたが、違いはありません。を試してみましたが$rootScope、部分的に機能しました (他の機能が壊れました) が、グローバル スコープは使用したくありません。

ご覧いただきありがとうございます。


HTML

<body>

	<div ng-app="rxApp" ng-controller="WizardCtrl">
		
		<div class="ng-view">
		</div>

		<div class="sidebar">
			<span ng-bind="test_var"></span>
		</div>

	</div>

</body>

表示 (One.html)

<input ng-model="test_var" />
	
<span ng-bind="test_var"></span>

コントローラ

rxApp.controller( 'WizardCtrl', function ( $scope, $http, $routeParams, $location, FileUploader ) {

   $scope.test_var = 'please work!';

)};

ルート

rxApp.config(['$routeProvider',
	function($routeProvider) {
		$routeProvider.
		when('/one', {
			templateUrl: 'templates/one.html',
			controller: 'WizardCtrl'
		}).
		when('/two', {
			templateUrl: 'templates/two.html',
			controller: 'WizardCtrl'
		}).
		otherwise({
			redirectTo: '/one'
		});
	}
]);

4

2 に答える 2

1

コントローラーは、ルートを変換するときに破棄されます。ベスト プラクティスに関しては、そのデータを処理するサービスを作成する必要があります。ビュー間でデータを運ぶためにコントローラーを使用しないでください。あなたの場合、問題は、ルートを変換するときにコントローラーが破棄されることです。

コントローラーを正しく使用する方法については、angular ドキュメントを参照してください。http://docs.angularjs.org/guide/dev_guide.mvc.understanding_controller

于 2016-03-10T05:40:21.693 に答える
0

問題は、モデル変数の作成です。

モデルにドットが必要です。モデルがオブジェクトを指すようにします。

したがって、コントローラーで次のようにします-

rxApp.controller('WizardCtrl',function($scope, $http, $routeParams,$location, FileUploader){

    $scope.test ={
         var : 'please work!'
       };

)};

表示 (One.html)

<input ng-model="test.var" />

<span ng-bind="test.var"></span>

HTML

<body>

    <div ng-app="rxApp" ng-controller="WizardCtrl">

        <div class="ng-view">
        </div>

        <div class="sidebar">
            <span ng-bind="test.var"></span>
        </div>

    </div>

</body>

スコープの詳細については、このUnderStanding Scopesを参照してください。

于 2016-03-10T06:23:56.273 に答える