我是在公司控制器中创建的。
$scope.$watch('companyName', function () {
console.log($scope.company.name);
});
我想获取公司名称,如何在ng-controller
与视图中的控制器名称匹配的位置调用它?
这是否与此类似?
<span ng-init="companyName"> {{ companyName() }} </span>
我不确定我是否理解如何从视图中获取该功能的信息。我想自己很困惑。
答案 0 :(得分:5)
是的,您的示例似乎有点奇怪。
无论如何,要在视图中绑定$scope
属性,请使用其名称。
所以在控制器中:
$scope.company = { name: "Acme" };
在视图中:
<span> {{ company.name }} </span>
无需手动创建$watch
。 Angular将为视图中使用的任何属性(为您)创建一个监视。
除非您想在视图中初始化某些内容,否则您也不必使用ng-init
。
要查看观看的实际操作,只需在input
旁边添加文字span
:
<input type="text" ng-model="company.name"/>
如果更改文本框中的值,您会看到span
中反映的更改。
答案 1 :(得分:3)
我觉得你很困惑!
在公司控制器中,您只需要:
$scope.companyName = "ACME";
要在视图中访问它:
{{ companyName }}
答案 2 :(得分:2)
绑定到值时,假定它相对于$scope
。在这种情况下(假设您想要的值与您在$watch
中指定的值相同),您希望init
一个项目到一个对象,它应该看起来像这样:
<span ng-init="company = {name: 'whatever' }">{{company.name}}</span>
出于各种原因,除ng-init
之类的内容外,不建议使用ng-repeat
。如果它工作,它可以工作,但我建议习惯在控制器中初始化事物(只需在控制器功能结束之前的某处添加语句,例如$scope.company = {name: 'whatever'};
)。一个原因是在单元测试中更容易测试控制器,因为让测试依赖于特定视图很烦人。)
答案 3 :(得分:1)
最简单的方法是:
控制器:
$scope.companyName = "My company";
视图:
<span>{{companyName}}</span>
$scope.$watch
只是一个监控CompanyName值变化的函数,我认为你不需要它。