- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题是如何在 Angular JS 中将 1 个 Controller $scope 调用到另一个 Controller 。基本上结构是,我有两个 Controller ,一个是 AddController,另一个是 ViewController。基本上我想要在 ViewController 中包含 AddController 字段的表单。单击“编辑”后,$rootScope.name = data.name、电子邮件和电话不会在表单字段上显示数据。
我已经尝试过了。
在 HTML 中
<div ng-app="app">
<div ng-controller="AddController">
<legend>Add Students</legend>
<form class="well">
<label>Name</label>
<input type="text" name="name" ng-model="name" />
<label>Email</label>
<input type="text" name="email" ng-model="email" />
<label>Phone</label>
<input type="text" name="phone" ng-model="phone" />
<br/>
<div ng-if="isUpdate">
<input type="hidden" name="id" ng-model="id" />
</div>
<div ng-show="addData">
<input type="button" value="Save" ng-click="saveStudent()" class="btn btn-primary" />
</div>
<div ng-show="!addData">
<input type="button" value="Update" ng-click="updateStudent()" class="btn btn-primary" />
</div>
</form>
</div>
<div ng-controller="ViewController">
<legend>View Students</legend>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Phone</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="student in students">
<td>{{ $index; }}</td>
<td>{{ student.name }}</td>
<td>{{ student.email }}</td>
<td>{{ student.phone }}</td>
<td><a href="javascript:void(0)" ng-click="edit($index)">Edit</a> | <a href="javascript:void(0)" ng-click="delete($index)">Delete</a></td>
</tr>
</tbody>
</table>
</div>
</div>
在 JS 中
var app = angular.module('app', []);
app.service('StudentsData', function($rootScope){
var s;
var students = [
{name: 'Tariq Ali', email: 'chk.webstar@gmail.com', phone: '58757'},
{name: 'Faizan Ali', email: 'kdjy.webstar@gmail.com', phone: '24545'}
];
this.list = function(){
return students;
}
this.single = function(id){
for(s=0; s<=students.length; s++){
if(s == id){
return students[s];
}
}
}
this.insert = function(data){
students.push(data);
}
this.update = function(updatedData, id){
for(s=0; s<=students.length; s++){
if(s == id){
students[s] = updatedData;
}
}
}
this.delete = function(id){
students.splice(id, 1);
}
this.name = function(){
}
});
app.controller('AddController', function($scope, StudentsData, $rootScope){
$scope.$broadcast('someEvent', [1,2,3]);
$rootScope.addData = true;
$scope.saveStudent = function(){
StudentsData.insert({name: $scope.name, email: $scope.email, phone: $scope.phone});
$scope.name = '';
$scope.email = '';
$scope.phone = '';
}
$scope.updateStudent = function(){
var updatedData = {name: $scope.name, email: $scope.email, phone: $scope.phone};
StudentsData.update(updatedData, $scope.id);
/*$scope.name = '';
$scope.email = '';
$scope.phone = '';
$rootScope.addData = true;*/
}
});
app.controller('ViewController', function($scope, StudentsData, $rootScope){
$scope.$on('someEvent', function(event, mass) {console.log(mass)});
$scope.students = StudentsData.list();
$scope.delete = function(id){
StudentsData.delete(id);
}
$scope.edit = function(id){
var data = StudentsData.single(id);
$rootScope.name = data.name;
$rootScope.email = data.email;
$rootScope.phone = data.phone;
$rootScope.addData = false;
$rootScope.isUpdate = true;
$rootScope.id = id;
//console.log($rootScope.addData);
//StudentsData.update(id);
}
});
这是我的 fiddle 手 http://jsfiddle.net/npm5u5h0/第一次,如果您单击“编辑”,其工作正常,但如果您添加新学生,并且在编辑新创建的学生后,文本字段不会显示数据。
最佳答案
为什么不让两个 Controller 都调用相同的服务呢?您可以将信息放入服务中并让他们都引用该信息。
angular.module('mycontrollers').controller('controllername', ['myService', function (myService) {
$scope.email = myService.getEmail;
}]);
angular.module('mycontrollers').controller('controllername2', ['myService', function (myService) {
$scope.email = myService.getEmail;
}]);
angular.module('myservices').service('myService', ['$rootScope', function ($rootScope) {
var self = this;
self.getEmail = function () {
...
return $rootScope.email;
};
self.setEmail = function (email) {
$rootScope.email = email;
};
}]);
关于javascript - 如何在 AngularJS 的另一个 Controller 中调用/使用 $scope 的 1 个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25872345/
我在这里有我的 javascript 代码: define(['controllers/controllers', 'services/alerts'], function(module) {
的意义是什么scope = scope-token *( SP scope-token ) scope-token = 1*( %x21 / %x23-5B / %x5D-7E ) 在 RFC6749
我是 AngularJS 的新手。我试图找出这两个 Controller 定义之间的区别: app.controller('simpleController', ['$scope', function
似乎所有 Guice 的开箱即用 Scope 实现本质上都是基于线程的(或完全忽略线程): Scopes.SINGLETON和 Scopes.NO_SCOPE忽略线程并且是边缘情况:全局范围和无范围。
如果这个问题涉及的是一个常见问题,我很抱歉,但我发现这个问题非常抽象,并且无法真正为其构建一个好的 Google 搜索词。 我试图理解并找到 Maven 中提供的依赖项的用例。我的想法是这样的: 假设
假设我有以下 Controller angular.module('scopeExample', []) .controller('MyController', ['$scope', func
当前在TmThemeEditor上注册的243种配色方案中, 我注意到几乎没有人使用范围选择器运算符。 对于以下情况,运算符非常有用: (text.html | text.xml) & (meta.t
我有一些行为不符合预期的代码......我在 AngularJS Controller 中有一个事件监听器,如下所示: $scope.$on("newClipSelected", function(e
首先,如果帖子太长,我深表歉意。另外,为了以防万一这会以某种方式干扰您可能给我的答案,我不会以通常的方式定义我的 Controller 。相反,我关注http://www.technofattie.c
我有一个模式,其中许多项目类型都是“可编辑的”。这意味着我有很多模板(每种可编辑项目类型一个),这些模板期望具有唯一的字段,但具有通用功能(编辑、保存、取消编辑、删除等)。这些常见功能导致 Contr
$evalAsync 和 $applyAsync 之间有什么区别?我的理解是,当我从指令中使用 $evalAsync 时,表达式将在浏览器呈现之前进行计算。 举个例子,如果我想滚动到页面上的特定位置但
我试图为一个 $scope 变量提供另一个 $scope 变量的值。有人能告诉我出了什么问题吗?查看简单的 plunker 了解详细信息: http://plnkr.co/edit/TlKnd2fM5
我有以下一段 Angular 代码 $scope.prepare = function(){ $scope.elems = [1,2,3]; }; $scope.action = functio
我正在关注 Angularjs 的官方教程,但我陷入了第 2 步。 这是一个片段,我不明白 $scope:scope 的含义, describe('PhoneListCtrl', function()
根据文档, Global: Component is shared among all users. Session: Separate instances of the component are
显示作用域变量,类似于 Angularjs 中的 ng-repeat 元素 这些是我的范围变量 $scope.published = true; $scope.count = 3; 我还有一个名为 l
我是 Angular 的新手,我想在普通的 javascript 中做一些非常简单的事情,但我无法找到如何在 Angular 中正确地做到这一点! 我想设置一个通用函数来清除输入文本字段: 我有这个
在article中发现了这样一个idea : Notice how the value function takes the scope as parameter (without the $ in
注释部分将位于 $scope.$on 下。我需要将 options 返回到我保存 $scope.$emit 的地方。请帮助!!! if (gridConfig.Batch) {
我有一个带有 2 个作用域的 Controller : app.controller('search', function($scope) { $scope.value1 = '';
我是一名优秀的程序员,十分优秀!