我已经精确地遵循了 Angular 文档,以获得一个使用隔离范围的指令,该范围包含来自父控制器范围对象的几个变量。
app.controller('MainCtrl', function($scope) {
$scope.name = 'Parent Name';
$scope.pokie = {
whyIs: "thisUndefined?"
};
});
app.directive('parseObject', function() {
var preLink = function($scope, el, att, controller) {
console.log('[link] :: ', $scope);
};
var postLink = function($scope, el, att, controller) {
console.log('[PostLink] :: ', $scope);
console.log('[$Parent] :: ', $scope.$parent.name);
};
return {
restrict: 'E',
scope: {
myPokie: '=pokie',
name: '=name'
},
template: [
'<div>',
'<h1>Directive does not get parent scope</h1>',
'<h1>{{ myPokie }}</h1>',
'<h2>{{ name }}</h2>',
'</div>'
].join(''),
compile: function() {
return {
pre: preLink,
post: postLink
}
}
}
});
http://plnkr.co/edit/FpQtt9?p=preview
谁能告诉我我的代码有什么问题?为什么指令的 Isolate 范围会为“myPokie”和“name”返回未定义的值?
我见过其他人说你必须为此使用 $scope.watch .. 但是 angular 的指令文档对此没有任何说明.. 我真的不想将 $scope.watch 用于如此微不足道的事情应该开箱即用。