0

我发现许多帖子谈论模型/视图未更新,但我仍然无法弄清楚这一点。我是 Angular 的新手,顺便说一句,所以我怀疑这是菜鸟问题。

我有以下 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

控制器在转换路由时被释放。至于最佳实践,您应该创建一个服务来处理该数据。您不应该使用控制器在视图之间传输数据。在您的情况下,问题是控制器在转换路由时被处置。

请参阅有关如何正确使用控制器的角度文档。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>

要阅读有关范围的更多信息,请阅读此了解范围

于 2016-03-10T06:23:56.273 回答