0

detail.html 文件中有按钮:

<div ng-controller="test.views.detail">
<div data-ng-repeat="item in details"  scroll>
    <button ng-click="showDetails(item)">The details</button>

detail.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">...

最初它显示falsedetailsClicked,当我单击按钮时,它转到 showDetails 函数,但值$scope.detailsClicked永远不会更新!直截了当不确定为什么它不起作用:(

4

1 回答 1

3

这是因为您在两个地方使用相同的控制器并期望范围对象与它不同的对象相同。每次您在标记中调用 ng-controller 时,都会创建一个新的范围对象。如果您希望它们基于相同的数据,请使用服务。

这是一个例子

app.controller('test.views.detail', function($scope, detailsClicked) {

    $scope.detailsClicked = detailsClicked;

    $scope.showDetails = function(item){
        $scope.detailsClicked.isClicked = true;
    }
});

创建一个将保留数据的工厂/服务,确保数据是

app.factory('detailsClicked', function(){
  var data = {
    isClicked: false
  }

  return data;
});
于 2015-02-09T03:06:49.370 回答