【发布时间】:2015-02-08 23:58:44
【问题描述】:
detail.html 文件中有按钮:
<div ng-controller="test.views.detail">
<div data-ng-repeat="item in details" scroll>
<button ng-click="showDetails(item)">The details</button>
详细.js文件
angular.module('test')
.controller('test.views.detail', function($scope) {
$scope.detailsClicked = false;
$scope.showDetails = function(item){
$scope.detailsClicked = true;
}....
在formDetail.html代码中:
<div ng-controller="test.views.detail">
{{detailsClicked}}
<div ng-if="detailsClicked">...
最初它显示false for detailsClicked,当我点击按钮时,它转到 showDetails 函数但$scope.detailsClicked 的值永远不会更新!直截了当不知道为什么它不起作用:(
【问题讨论】:
-
我认为这是因为 ng-repeat 引入了一个额外的范围。
-
如果你使用 ControllerAs 语法,你应该可以摆脱它,但老实说,我有一段时间没有做过 Angular,所以有点生疏(但我仍然记得这一点...)。我认为 ControllerAs 将允许您专门引用控制器 detailsClicked 属性,因此 Angular 将知道该怎么做(我认为)=P.
-
formDetail.html是如何发挥作用的? -
您是否尝试将
$scope.detailsClicked移动到$scope.obj = { detailsClicked: false};?在早期版本的 Angular 中,“始终在绑定中有一个点”是最佳实践。 -
test.views.detail 控制器有两个实例——一个在 formDetail.html 中,另一个在 detail.html 中。如果您想在两个实例之间共享状态,请创建一个服务来保存状态或使用状态参数(如果您使用的是 ui-router)。
标签: angularjs angularjs-scope angular-ng-if