【发布时间】:2018-12-21 19:49:40
【问题描述】:
我目前正在开发一个 AngularJS 应用程序,它提供了一个带有不同滑块的视图,允许用户在 preferences.html 文件中指定首选项(使用 Angular Material)。现在我想扩展这个应用程序以允许不同的用户同时使用它。这意味着preferences.html 会显示多次,每个用户一个实例。但是,每次调用 preferences.html 时,都应该将首选项发送到另一个 ng-model。
到目前为止,我的代码如下所示(单个用户的偏好获取):
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>
我的控制器:
var app = angular.module('myApp');
app.controller('myController', function($rootScope, $scope, $filter, $timeout) {
this.PreferenceOne = 10;
this.PreferenceTwo = 10;
...
});
每个用户的偏好视图应该同时显示,如下所示:
<div ng-include="preferences.html" ng-show="isReady"></div> (for User 1)
<div ng-include="preferences.html" ng-show="isReady"></div> (for User 2)
...
我发现类似问题的解决方案使用指令,但他们总是尝试只使用一个视图和多个模型。但是,我希望拥有多个视图实例,并且每个实例都应使用不同的ng-model。最终我想收集所有模型/视图的值并将它们发送到后端。
【问题讨论】:
-
将每一个绑定到不同的路由,例如.. yourUrl/instance/1 并将该路由参数传递给控制器。每个控制器都将从同一个控制器实例化,只是具有不同的 url,因此使用 angular-ui-router 形成不同的状态。当报告回来时,每个人都会将所述参数作为其标识符传递?
-
感谢您的评论。据我正确理解,UI-Router 只允许将一种状态加载到视口中。我想同时多次显示同一个 html 文件的多个实例(使用不同的模型)。我更新了我原来的帖子来说明这一点。
-
我很害怕。您将不得不编写自定义的霸王控制器,然后将使用静态 HTML,或者如果您同时拥有的数量不是静态的甚至是动态的,然后将控制器绑定为霸王应该产生的跳虫。我将从静态 html 和 2 个在其中活动的控制器开始,同时从霸主静态生成,然后尝试从那里移动。
标签: angularjs angularjs-directive angularjs-material