【发布时间】:2015-04-14 10:42:01
【问题描述】:
我是一个开始使用角度材料的新手。我正在使用边栏。
基本上是这样的
<md-sidenav layout="column" class="md-sidenav-left md-whiteframe-z2" md-component-id="left">
</md-sidenav>
<md-button id="side-button" ng-click="toggleLeft()"></md-button>
$scope.toggleLeft = function() {
$mdSidenav('left').toggle()
.then(function(){
$log.debug("toggle left is done");
});
};
它按预期工作。但是有一件奇特的事情,当我在那个 js 之后写了另一行:
timeLine.toggle_left_most = $scope.toggleLeft();
并将ng-click="toggleLeft()" 替换为ng-click="timeLine.toggle_left_most()",它返回给我“找不到句柄'left'的实例”。
但是当我在$mdSidenav('left').toggle() 后面插入一行以查询 md-component-id="left" 的元素时,它返回了该对象。这导致我询问AngularJS的执行顺序和更深层次的原则。
我的问题是,为什么它在 DOM 已经加载时返回“未找到实例”?为什么添加一行赋值会破坏代码? $mdSidenav 是否不仅需要 DOM,还需要加载其他一些东西?关键是什么?
问题是因为当我不写那行时,对 $scope.toggleLeft 的赋值不会立即执行吗?那么什么时候执行呢?
【问题讨论】:
-
directives 有
priority: 0,属性,你可以设置它
标签: javascript angularjs angularjs-service angular-material