2016-11-16 27 views
0

我正在创建一个Angular 1.5组件,并且我停留在某个东西上。我正在通过$onChanges观察对绑定输入的更改。当我在$onChanges上调用函数底部的数据时,看起来都不错,但在我看来这并没有改变。

ctrl.$onChanges = function (changesObj) { 
    if (/* test to see if new data is invalid */) { 
     ctrl.test = 2; 
     console.log(2); 
     // return; 
    } else { 
     var newData = changesObj.data.currentValue; 
     ctrl.test = 1; 
     console.log(1); 
    } 
}; 

我已经在if语句中控制台记录测试,并且我得到一堆日志。第一个是正确的,正如预期的那样,但其余的都是错误的。上面的日志是简单的:

2 
(8) 1 

然而,当我在视图中显示test,它总是2.我甚至控制台登录在函数的底部ctrl.test的状态,它的罚款那里,但查看保留2.

有什么我需要做Angular 1.5组件来触发从控制器到视图的更新?它似乎只工作一次,但只有一次?

+0

可能是你可以用你的,如果内$声明应用,使消化周期被调用,它会在视图中立即反映。 – Thangadurai

+0

除了1.5组件本身没有范围,我们鼓励不使用$范围,不是吗?控制器上没有$应用。 – RhoVisions

回答

0

试试这个,希望它可以帮助

function updateValue(data){ 

} 

function componentController() { 
    function setType() { 
     // you will get changes on this object 
     // do your stuff here 
     console.log(this) 
     updateValue.apply(this,[this.data]) 
    } 
    this.$onInit = setType; 
    this.$onChanges = setType; 
} 
+0

将它添加到init中并没有做任何事情。我之前已经初始化了这些值。问题是他们没有更新。 – RhoVisions

+0

@RhoVisions - 你可以使用apply() – Bhuneshwer

+0

我很困惑'updateValue'是什么?随机函数如何使用apply方法? – RhoVisions