每次将值更新到控制器时,我想更改更新指令。
不幸的是,我无法从指令中访问范围值。
这是指令的代码:
myApp.directive( 'raphael', function ($compile, $document, $timeout) {
return {
link: function ( scope, element, attrs ) {
var paper = new Raphael(element[0], 600, 600);
// I need it right here !
我尝试过$ watch:
scope: {variable: '='},
link: function ( scope, element, attrs ) {
scope.$watch(variable, function(){
console.log(variable);
但它不起作用
然后,每次在控制器中更新变量时,如何“更新”整个指令?
谢谢!
答案 0 :(得分:1)
你的$ watch只是一个简单的问题,有点难以解释。 “variable”不是代码范围中的已定义变量(不是角度范围内的变量,而是JavaScript函数的实际范围)。
也许代码可以解释它比文字更好:
scope: {variable: '='},
link: function ( scope, element, attrs ) {
scope.$watch("variable", function (variable) {
console.log(variable);
让我们将变量重命名为更明确的变量以显示正在发生的事情。对于驻留在范围内的变量,我们将调用'foo'并通过$ watch传入foo的值,我们将调用'bar'
scope: {foo: '='},
link: function ( scope, element, attrs ) {
scope.$watch("foo", function (bar) {
console.log(bar);
因此$ scope.foo是一个驻留在$ scope上的变量,它由元素的foo属性双向绑定。 bar是$ watch函数传回的newValue。