Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 当Ng click位于div内时,Ng show不会更新_Html_Angularjs_Angularjs Scope_Angularjs Ng Click_Ng Show - Fatal编程技术网

Html 当Ng click位于div内时,Ng show不会更新

Html 当Ng click位于div内时,Ng show不会更新,html,angularjs,angularjs-scope,angularjs-ng-click,ng-show,Html,Angularjs,Angularjs Scope,Angularjs Ng Click,Ng Show,我和ng秀有个节目 当我在DIV之外的元素上运行ng click时,它工作正常,我可以隐藏它 当我在DIV内部的元素上运行ng click时,它不起作用。当I console.log时,我可以看到变量正在更改,但视图不会更新 我尝试使用$scope.$apply(),但它出现错误,并说它已经在运行$apply() 控制器的部件: $scope.selectedActivity = { "dayNr": 0, "actNr": 0 }; $

我和ng秀有个节目

  • 当我在DIV之外的元素上运行ng click时,它工作正常,我可以隐藏它

  • 当我在DIV内部的元素上运行ng click时,它不起作用。当I console.log时,我可以看到变量正在更改,但视图不会更新

  • 我尝试使用$scope.$apply(),但它出现错误,并说它已经在运行$apply()

  • 控制器的部件:

        $scope.selectedActivity = {
            "dayNr": 0,
            "actNr": 0
        };
    
        $scope.resetSelectedActivity = function () {
            console.log("SelAct: ", $scope.selectedActivity);
            $scope.selectedActivity.dayNr = -1;
            $scope.selectedActivity.actNr = -1;
            console.log("SelAct: ", $scope.selectedActivity);
        };
    
        $scope.setSelectedActivity = function (dayNr, actNr) {
            console.log("SelAct: ", $scope.selectedActivity);
            $scope.selectedActivity.dayNr = dayNr;
            $scope.selectedActivity.actNr = actNr;
            console.log("SelAct: ", $scope.selectedActivity);
        };
    
    HTML的部分内容:

        <div ng-repeat="x in xs">
                <ion-scroll>
                    <div ng-repeat="y in ys track by $index">
    
                        <div ng-click="setSelectedActivity($parent.$index, $index)">
                            <!--THE PROBLEM IS HERE-->
                            <div ng-show="selectedActivity.dayNr == $parent.$index && selectedActivity.actNr == $index">
    
                                <div>
                                    <!--THIS LOGS OUT CORRECT VALUES BUT NG-SHOW IS NOT UPDATED-->
                                    <div ng-click="resetSelectedActivity()">
                                        Reset
                                    </div>
                                </div>
    
                            </div>
                            <div>
                                <img src="img/checkButtonOverlay.png" />
                            </div>
                        </div>
                        <!--THIS LOGS OUT CORRECT VALUES AND NG-SHOW _IS_ UPDATED-->
                        <button ng-click="resetSelectedActivity()">reset</button>
                    </div>
                </ion-scroll>
            </div>
    
    
    重置
    重置
    
    请注意,出于保密考虑,我从代码中删除了很多内容,但原则应该是一样的

    谢谢大家!

    找到了问题

    我有一个ng的点击,显示DIV在外面。当我点击时,两次点击都被输入

    所以首先重置SelectedActivity(),然后在setSelectedActivity()中再次设置它

    使用以下方法修复此问题:

    <div ng-click="resetSelectedActivity($parent.$index, $index, $event)">
        ...
    </div>
    

    似乎$apply()会有所帮助,但我不知道在它已经运行时如何运行它。根据ngRepeat创建了一个新的作用域,所以我猜当您更新变量时,它只在childscopeNo中更新。不幸的是,事实并非如此。我试着看看父母和孩子打印了什么,但没有什么区别。我删除了太多的代码。在上一次编辑中,我在帖子中输入了正确的代码。谢谢你的回答。:)@klskl在本例中不是因为原型继承和他共享对象而不是简单属性的事实。看看这个答案:您的
    $event
    是一个javascript对象,与angular无关。您应该将其命名为
    事件
    。从另一篇堆栈溢出文章中获得代码就不那么令人困惑了,但这是一个很好的观点。我同意。:)这就是问题所在,事件的传播就像你在这把小提琴中看到的:@DeblatonJean-Philippee:在AngularJs中它实际上被称为$event。这是同一个对象,只是获取它的另一种方式:在ng click中,您可以像这样发送$event作为参数,它将获取javascript事件:
    Test
    发现我不需要在ng click中发送$event。它在没有参数的情况下工作。只是
    event.stopPropagation()
    
    $scope.setSelectedActivity = function (dayNr, actNr, event) {
        $scope.selectedActivity.dayNr = dayNr;
        $scope.selectedActivity.actNr = actNr;
    
        //This cancel the mouseclick
        event.stopPropagation();
    };