我遇到的问题是我的变量$scope.test
在不断变化。
首先我在node.js服务器上有一个函数,它返回一个json对象,如下所示:
{
objectOne: "some text",
objectTwo: "more text",
objectThree: {
text: "important text",
inf: "some info"
},
objectFour: "even more text"
}
然后在角度我有一个控制器。 (此控制器用于2个html模板。不确定是否重要)。所以对于控制器中的功能:
$scope.start = function () {
$location.path('/start');
SomeService.start({}, someVar, function (success, msg, t) {
if (!success) {
console.error(msg);
}
$scope.test = t;
console.log($scope.test); //this prints out the json object above
});
};
然后我有一个模板文件test.html:
<div>
<md-card>
<md-card-title>
<md-card-title-text>
<span class="md-headline">{{test.objectThree.text}}</span>
</md-card-title-text>
</md-card-title>
<md-card-actions layout="row" layout-align="end center">
<md-button>Cancel</md-button>
</md-card-actions>
</md-card>
</div>
问题在于它没有显示文字。所以我在控制器中创建了另一个函数,每100ms记录一次$scope.test
。
$interval(function () {
console.log($scope.test);
}, 100);
现在奇怪的是它打印出如下例子:
Object {
objectOne: "some text",
objectTwo: "more text",
objectThree: {
text: "important text",
inf: "some info"
},
objectFour: "even more text"
}
-
undefined
-
undefined
这仍在继续。一旦它打印出对象,那么2次未定义。
但是,当我定义一个可修复的$scope.test2 = "test2text"
OUTSIDE函数,然后让我的html像这样:
<div>
<md-card>
<md-card-title>
<md-card-title-text>
<span class="md-headline">{{test2}}</span>
</md-card-title-text>
</md-card-title>
<md-card-actions layout="row" layout-align="end center">
<md-button>Cancel</md-button>
</md-card-actions>
</md-card>
</div>
它起作用并在网站上显示文字,但我不知道为什么。
所以有人知道为什么会这样吗? 如果您需要其他信息,请询问。 感谢您抽出宝贵时间;)
答案 0 :(得分:2)
不要通过$scope
,这是非常棘手的事情,可能会令人困惑。
但是,您可以使用service
向控制器提供functions
并从中使用它。