我有这个HTML:
<p>Hello {{name}}</p>
控制器是:
function myCtrl(scope, service) {
scope.name = service.getUsername(); // service.getUsername() return "World!"
}
myCtrl.$inject = ['$scope', 'originalService'];
该服务运行良好,因此我不在此处粘贴代码…在这种情况下,结果是“ Hello world! ”。我以这种方式更改了HTML:
<p>Hello {{service.getUsername()}}</p>
但这是行不通的。
我改变了控制器:
function myCtrl(scope, service) {
scope.ser = service;
}
myCtrl.$inject = ['$scope', 'originalService'];
然后是HTML
<p>Hello {{ser.getUsername();}}</p>
这可行!
所以我的问题是:
这是直接在HTML中直接使用服务功能的唯一方法,还是我遗漏了某些东西?
AngularJS模板只能调用作用域上可用的函数 。因此,无论采用哪种方法,都需要在示波器上具有功能。
如果您想直接从模板调用服务的功能,则有几种选择:
您尝试过的一种-也就是说,将整个服务公开在一个范围内 :
$scope.service = service;
然后在模板中:
<p>Hello {{service.getUsername();}}</p>
这是控制器中的一种代码,使所有服务方法在示波器上可用,从而可用于模板。
一对一的曝光方法
对暴露的内容进行精确控制:
$scope.getUsername = service.getUsername;
然后在模板中:
<p>Hello {{getUsername();}}</p>
这需要更多的工作公开方法,但是可以对所公开的内容进行细粒度的控制。
暴露proxing方法 :
$scope.getMyUsername = function() {
//pre/post processing if needed
return service.getUsername();
};
您可以使用这些方法中的任何一种,也可以将它们混合使用,但是 到最后,功能必须在范围上结束 (直接或通过在范围上公开的另一个对象)。
我是个初学者只是想找个更好的方法来解决问题 问题是,最佳实践是捕捉异常还是避免异常? 或
问题内容: 我知道您不应该将显示逻辑放在控制器中,并且我正在努力使用正确的AngularJS方法来实现此目的。 我正在模态内展示表格。我正在使用Zurb Foundation的揭示模式。 标记: 控制器: 注意:$ scope.ui是我用来存储UI值的对象,在用户实际单击“添加小部件”之前,该值不应绑定到我的对象 $ scope.myobj是存储我的数据的位置。 基金会的职能提出了模式叠加。 由于
问题内容: 首先,我必须说我对API java.util.concurrent很陌生,所以也许我正在做的事情是完全错误的。 我想怎么办? 我有一个Java应用程序,它基本上运行2个单独的处理(称为 myFirstProcess , mySecondProcess ),但是这些处理必须同时运行。 因此,我尝试这样做: myFirstProcess 和 mySecondProcess 是实现的类,它们
下面是一个最小的代码,用于重新创建让我怀疑的条件: 为什么在大小写中传递常量作为参数而在大小写中工作会出错? 错误的详细信息: 错误:将“const std::basic_string”作为“std::basic_string”的“this”参数传递
本文向大家介绍详解Golang开启http服务的三种方式,包括了详解Golang开启http服务的三种方式的使用技巧和注意事项,需要的朋友参考一下 前言 都说go标准库实用,Api设计简洁。这次就用go 标准库中的net/http包实现一个简洁的http web服务器,包括三种版本。 v1最简单版 直接使用http.HandleFunc(partern,function(http.Response
本文向大家介绍详解android与服务端交互的两种方式,包括了详解android与服务端交互的两种方式的使用技巧和注意事项,需要的朋友参考一下 做Android开发的程序员必须知道android客户端应该如何与服务端进行交互,这里主要介绍的是使用json数据进行交互。服务端从数据库查出数据并以json字符串的格式或者map集合的格式返回到客户端,客户端进行解析并输出到手机屏幕上。 此处介绍两种方式