我编写了一个过滤函数,它将根据您传递的参数返回数据.我想在我的控制器中使用相同的功能.是否可以在控制器中重用过滤器功能?
这是我到目前为止所尝试的:
function myCtrl($scope,filter1)
{
// i simply used the filter function name, it is not working.
}
Run Code Online (Sandbox Code Playgroud) 据我了解,当在工厂内部时,我返回一个被注入控制器的对象.在服务内部时,我正在处理使用的对象this而不返回任何内容.
我假设服务总是单例,并且每个控制器都会注入一个新的工厂对象.然而,事实证明,工厂对象也是单身人士?
用于演示的示例代码:
var factories = angular.module('app.factories', []);
var app = angular.module('app', ['ngResource', 'app.factories']);
factories.factory('User', function () {
return {
first: 'John',
last: 'Doe'
};
});
app.controller('ACtrl', function($scope, User) {
$scope.user = User;
});
app.controller('BCtrl', function($scope, User) {
$scope.user = User;
});
Run Code Online (Sandbox Code Playgroud)
当改变user.first的ACtrl事实证明,user.first在BCtrl也发生了变化,比如User是一个单身?
我的假设是在一个带有工厂的控制器中注入了一个新实例?
是否有可能让一个控制器使用另一个?
例如:
此HTML文档只是打印MessageCtrl控制器在messageCtrl.js文件中传递的消息.
<html xmlns:ng="http://angularjs.org/">
<head>
<meta charset="utf-8" />
<title>Inter Controller Communication</title>
</head>
<body>
<div ng:controller="MessageCtrl">
<p>{{message}}</p>
</div>
<!-- Angular Scripts -->
<script src="http://code.angularjs.org/angular-0.9.19.js" ng:autobind></script>
<script src="js/messageCtrl.js" type="text/javascript"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
控制器文件包含以下代码:
function MessageCtrl()
{
this.message = function() {
return "The current date is: " + new Date().toString();
};
}
Run Code Online (Sandbox Code Playgroud)
这只是打印当前日期;
如果我要添加另一个控制器,DateCtrl它将日期以特定格式交还给MessageCtrl,那怎么会这样做呢?DI框架似乎关注XmlHttpRequests和访问服务.
我有一个执行http POST请求的函数.代码如下所示.这很好用.
$http({
url: user.update_path,
method: "POST",
data: {user_id: user.id, draft: true}
});
Run Code Online (Sandbox Code Playgroud)
我有另一个http GET函数,我想发送数据到该请求.但我没有这个选择.
$http({
url: user.details_path,
method: "GET",
data: {user_id: user.id}
});
Run Code Online (Sandbox Code Playgroud)
的语法http.get是
get(url,config)
有人可以帮我弄这个吗?
这似乎困扰了很多人(包括我).
ng-options在AngularJS中使用指令来填充<select>标记的选项时,我无法弄清楚如何设置选项的值.这方面的文档真的不清楚 - 至少对像我这样的傻瓜来说.
我可以像这样轻松设置选项的文本:
ng-options="select p.text for p in resultOptions"
Run Code Online (Sandbox Code Playgroud)
当resultOptions例如为:
[
{
"value": 1,
"text": "1st"
},
{
"value": 2,
"text": "2nd"
}
]
Run Code Online (Sandbox Code Playgroud)
它应该(并且可能是)设置选项值最简单的事情,但到目前为止我还没有得到它.
目前,我正在学习AngularJS和我难以理解的区别ng-bind和ng-model.
任何人都可以告诉我他们的差异,以及何时应该使用另一个?
我理解AngularJS会运行一些代码两次,有时甚至更多,比如$watch事件,不断检查模型状态等.
不过我的代码:
function MyController($scope, User, local) {
var $scope.User = local.get(); // Get locally save user data
User.get({ id: $scope.User._id.$oid }, function(user) {
$scope.User = new User(user);
local.save($scope.User);
});
//...
Run Code Online (Sandbox Code Playgroud)
执行两次,将2条记录插入我的数据库.我显然还在学习,因为我多年来一直在抨击这个!
创建指令时,可以将代码放入编译器,链接函数或控制器中.
在文档中,他们解释说:
但是,对我而言,目前尚不清楚哪种代码应该去哪里.
例如:我可以在编译中创建函数并将它们附加到链接中的作用域,还是仅将函数附加到控制器中的作用域?
如果每个指令都有自己的控制器,控制器如何在指令之间共享?控制器是真的共享还是只是范围属性?
在Polymer Getting Started页面上,我们看到Polymer的实例:
<html>
<head>
<!-- 1. Shim missing platform features -->
<script src="polymer-all/platform/platform.js"></script>
<!-- 2. Load a component -->
<link rel="import" href="x-foo.html">
</head>
<body>
<!-- 3. Declare the component by its tag. -->
<x-foo></x-foo>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
您将注意到的是<x-foo></x-foo>由platform.js和定义的x-foo.html.
看起来这相当于AngularJS中的指令模块:
angular.module('xfoo', [])
.controller('X-Foo', ['$scope',function($scope) {
$scope.text = 'hey hey!';
})
.directive('x-foo', function() {
return {
restrict: 'EA',
replace: true,
controller: 'X-Foo',
templateUrl: '/views/x-foo.html',
link: function(scope, controller) {
}
};
});
Run Code Online (Sandbox Code Playgroud)
两者有什么区别?
Polymer解决AngularJS没有或不会有什么问题?
是否有计划在未来将Polymer与AngularJS联系起来?
我们可以有多个表达式来添加多个ng-class吗?
例如.
<div ng-class="{class1: expressionData1, class2: expressionData2}"></div>
Run Code Online (Sandbox Code Playgroud)
如果是的话,任何人都可以提出这样做的例子.
.