Angularjs 每次使用不同的模型重用角度html视图

Angularjs 每次使用不同的模型重用角度html视图,angularjs,angularjs-directive,angularjs-material,Angularjs,Angularjs Directive,Angularjs Material,我目前正在开发一个AngularJS应用程序,它提供了一个带有不同滑块的视图,允许用户在preferences.html文件中指定首选项(使用AngularMaterial)。现在我想扩展这个应用程序,允许不同的用户同时使用它。这意味着将多次显示preferences.html,每个用户一个实例。但是,每次调用preferences.html,都应该将首选项发送到另一个ng模型 到目前为止,我的代码如下所示(针对单个用户的偏好获取): preferences.html: <div ng-c

我目前正在开发一个AngularJS应用程序,它提供了一个带有不同滑块的视图,允许用户在
preferences.html
文件中指定首选项(使用AngularMaterial)。现在我想扩展这个应用程序,允许不同的用户同时使用它。这意味着将多次显示
preferences.html
,每个用户一个实例。但是,每次调用
preferences.html
,都应该将首选项发送到另一个ng模型

到目前为止,我的代码如下所示(针对单个用户的偏好获取):

preferences.html:

<div ng-controller="myController as myCtrl">
  <div layout="row">
    <h2>One</h2>
    <md-slider class="preference-slider" min="0" step="1" max="20" ng-model="myCtrl.preferenceOne" id="slider"></md-slider>
    <p class="preference-value">{{myCtrl.preferenceOne}}</p>
    <h2>Two</h2>
    <md-slider class="preference-slider" min="0" step="1" max="20" ng-model="myCtrl.preferencesTwo" id="slider"></md-slider>
    <p class="preference-value">{{myCtrl.preferencesTwo}}</p>
  </div> 
</div>
每个用户的首选项视图应同时取消显示,如下所示:

<div ng-include="preferences.html" ng-show="isReady"></div> (for User 1)
<div ng-include="preferences.html" ng-show="isReady"></div> (for User 2)
...
(适用于用户1)
(适用于用户2)
...

我发现的类似问题的解决方案使用指令,但它们总是尝试只使用一个视图和多个模型。一、 但是,希望有多个my view实例,每个实例应使用不同的
ng模型
。最后,我想收集所有模型/视图的值,并将它们发送到后端。

如果您使用ui路由器命名视图,并将每个视图连接到相同的“preferences.html”模板和“preferencesController”或其他什么,这会起作用吗?每个实例是否本质上是一个单一的表单,并且屏幕将允许多个活动用户同时使用(例如,带有单屏幕的触摸屏信息亭)


我个人从未这样做过,但我相信它会为每个命名视图实例化一个新的控制器实例,而不是“共享”一个控制器实例。

将每个实例绑定到不同的路由,例如。。您的URL/instance/1并将该路由参数传递给控制器。每个控制器都将从同一个控制器实例化,只有一个控制器具有不同的url,因此,通过角度ui路由器形成不同的状态。当报告回来时,每个人都会将所述参数作为其标识符传递?谢谢您的评论。据我所知,UI路由器只允许将一个状态加载到视口中。我想同时多次显示同一html文件的多个实例(使用不同的模型)。我更新了我原来的帖子来说明这一点。我很震惊。您必须编写自定义的霸王控制器,然后使用静态HTML,甚至是动态的,如果在同一个tyme中有多少不是静态的,那么它将把控制器绑定为霸王应该产生的虫族。我会从静态html开始,同时从overlord静态生成的2个控制器在其中活动,并尝试从那里移动。是的,你的触摸屏亭的例子正是我的意思。我尝试使用angular ui router使其工作,但我找不到一个解决方案,即为每个用户重复使用相同的html文件,但将输入存储在不同的变量中。
<div ng-include="preferences.html" ng-show="isReady"></div> (for User 1)
<div ng-include="preferences.html" ng-show="isReady"></div> (for User 2)
...
<ui-view name="user1" />
<ui-view name="user2" />
etc.
$stateProvider      
  .state('multiUser',{      
    views: {        
      'user1': {        
        templateUrl: 'preferences.html',        
        controller: 'preferencesController'     
      },        
      'user2': {        
        templateUrl: 'preferences.html',        
        controller: 'preferencesController'     
      }     
    }       
  })