这整个周末,我很困扰,不理解为什么父控制器的功能没有被子控制器识别.
我很快意识到将控制器作为vm是原因:
<div data-ng-controller="ParentCtrl as vm">
<div data-ng-controller="Child1 as vm"></div>
<div data-ng-controller="Child2 as vm"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
当然,现在看来很明显,child1和2都不会在ParentCtrl中看到函数,如果我使用了之前没有vm的工作模式,而是使用$ scope,那么一切都会好的.
所以我的问题是"使用"vm"方法对任何人都有什么好处,如果它优于不使用它,怎么能在ParentCtrl中调用函数调用而不是发出?
谢谢
任何人都可以为这个JSFiddle提供正确的方法:
<style>
.red #btn{
background-color:red;
}
.blue #btn{
background-color:blue;
}
</style>
<body ng-app="ap" ng-controller="con">
<button id="btn" ng-click="changeClass()">Change Class</button>
</body>
<script>
var app = angular.module("ap",[]);
app.controller("con",function($scope){
$scope.class = "red";
$scope.changeClass = function(){
if ($scope.class === "red #btn")
$scope.class = "blue #btn";
else
$scope.class = "red #btn";
};
});
</script>
Run Code Online (Sandbox Code Playgroud)
我试图通过.class和#ID更改元素的类.
提前致谢
谢谢tymeJV,新JSFiddle:
angularjs ×2