Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 在AngularJS中传递$scope和$location.Path()_Html_Angularjs - Fatal编程技术网

Html 在AngularJS中传递$scope和$location.Path()

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"&

我的项目中有两个屏幕,MemberList.HTML和EditMember.HTML。 MemberList.HTML显示所有成员以及每个成员的编辑链接。 当我点击编辑链接时,它调用函数ng click=“EditMember(member)”,EditMember(member)的代码为

EditMember.Html的代码

<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,它是在加载视图之前获取数据的一种方法,但这种技术的使用取决于特定的用例。