Html 在AngularJS中传递$scope和$location.Path()
我的项目中有两个屏幕,MemberList.HTML和EditMember.HTML。 MemberList.HTML显示所有成员以及每个成员的编辑链接。 当我点击编辑链接时,它调用函数ng click=“EditMember(member)”,EditMember(member)的代码为 EditMember.Html的代码Html 在AngularJS中传递$scope和$location.Path(),html,angularjs,Html,Angularjs,我的项目中有两个屏幕,MemberList.HTML和EditMember.HTML。 MemberList.HTML显示所有成员以及每个成员的编辑链接。 当我点击编辑链接时,它调用函数ng click=“EditMember(member)”,EditMember(member)的代码为 EditMember.Html的代码 <div> <div class="bottom-margin"> <div class="left-label"&
<div>
<div class="bottom-margin">
<div class="left-label">ID</div>
<div><input type="text" name="txtID" id="txtID" ng-model="Member.ID"/></div>
</div>
<div class="bottom-margin">
<div class="left-label">First Name</div>
<div><input type="text" name="txtFirstName" ng-model="Member.FirstName"/></div>
</div>
</div>
<div>
<div class="bottom-margin">
<div class="left-label"><input type="button" name="btnCancel" value="Cancel" /></div>
<div><input type="button" name="btnSave" value="Save" /></div>
</div>
</div>
现在的问题是,在警报中,它显示的是我的名字,但它没有在EditMember.Html中显示任何数据
所有的东西都在同一个角度控制器中,这里并没有使用不同的控制器
如何将带有成员数据的$scope传递给EditMember.Html?我做错了什么?与服务不同,控制器在角度上不是单例的。更改位置时,将创建该控制器的新实例,从而创建新范围 就我个人而言,我会将URL中的引用传递给您要编辑的成员,例如
/members/edit/1234
,并在控制器加载时或在使用路由时加载该数据
个人,我也会考虑使用一个不同的控制器来编辑VS查看,并将任何共享的功能移动到服务中,只是为了保持事物的一致性。
不同于服务,控制器不是单角的。更改位置时,将创建该控制器的新实例,从而创建新范围
就我个人而言,我会将URL中的引用传递给您要编辑的成员,例如/members/edit/1234
,并在控制器加载时或在使用路由时加载该数据
个人,我也会考虑使用一个不同的控制器来编辑VS查看,并将任何共享的功能移动到服务中,只是为了保持事情的连贯性。
< P> @ GelnthoNoNB,我做了类似的事情……我在这里使用了相同的控制器。 在途中,我补充道$routeProvider.when('/members/editmember/:ID',
{
templateUrl: '/Template/EditMember.html',
controller: 'myCntrl'
});
在控制器中,我添加了$routeParams参数
if ($routeParams.ID != null) {
GetMember();
}
function GetMember() {
var getData = angularService.GetMember($routeParams.ID);
getData.then(function (mem) {
$scope.Member = mem.data;
}, function (error) {
alert('Error in getting records');
});
}
在MemberList.Html中,我使用href而不是调用函数
<a href="/members/editmember/{{member.ID}}">Edit</a>
我不确定这样做是否正确,但它正在工作。@glennanthonyb,我做了类似的事情……我在这里使用的是同一个控制器 在途中,我补充道
$routeProvider.when('/members/editmember/:ID',
{
templateUrl: '/Template/EditMember.html',
controller: 'myCntrl'
});
在控制器中,我添加了$routeParams参数
if ($routeParams.ID != null) {
GetMember();
}
function GetMember() {
var getData = angularService.GetMember($routeParams.ID);
getData.then(function (mem) {
$scope.Member = mem.data;
}, function (error) {
alert('Error in getting records');
});
}
在MemberList.Html中,我使用href而不是调用函数
<a href="/members/editmember/{{member.ID}}">Edit</a>
我不确定这样做是否正确,但它正在工作。使用另一个控制器在初始化控制器时调用那里的服务我认为,当您调用
$location.path()
时,您的控制器会重新加载。尝试将reloadOnSearch:false
添加到路线配置中。但是在我看来,如果您在同一个控制器上工作,那么更改位置路径是没有意义的。使用另一个控制器在初始化控制器时调用那里的服务我认为,当您调用$location.path()
时,您的控制器被重新加载。尝试将reloadOnSearch:false
添加到路线配置中。但是在我看来,如果你在同一个控制器上工作,那么改变位置路径是没有意义的。在加载数据之前,您可能会体验到胡须的闪烁,但您可能已经在模板中使用ng if
或ng show
处理了此问题。值得一看$routeProvider resolve,它是在加载视图之前获取数据的一种方法,但是这种技术的使用取决于特定的用例。是的,类似这样的东西很好。在加载数据之前,您可能会体验到胡须的闪烁,但您可能已经在模板中使用ng if
或ng show
处理了此问题。值得一看$routeProvider resolve,它是在加载视图之前获取数据的一种方法,但这种技术的使用取决于特定的用例。