【发布时间】:2015-05-05 19:59:41
【问题描述】:
我已经精确地遵循 Angular 文档来获得一个指令,该指令使用一个隔离范围,其中包含来自父控制器范围对象的几个 var。
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 做某事如此琐碎,应该开箱即用。
【问题讨论】:
标签: javascript angularjs angularjs-directive angularjs-scope isolate-scope