我理解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条记录插入我的数据库.我显然还在学习,因为我多年来一直在抨击这个!
有没有办法使用多个对象订阅事件 $watch
例如
$scope.$watch('item1, item2', function () { });
Run Code Online (Sandbox Code Playgroud) 这是我的HTML:
<input id="selectedDueDate" type="text" ng-model="selectedDate" />
Run Code Online (Sandbox Code Playgroud)
当我在框中输入时,模型通过双向绑定机制进行更新.甜.
但是,当我通过JQuery这样做...
$('#selectedDueDate').val(dateText);
Run Code Online (Sandbox Code Playgroud)
它不会更新模型.为什么?
我目前有一个内置路由的AngularJS应用程序.它工作正常,一切正常.
我的app.js文件如下所示:
angular.module('myapp', ['myapp.filters', 'myapp.services', 'myapp.directives']).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/', { templateUrl: '/pages/home.html', controller: HomeController });
$routeProvider.when('/about', { templateUrl: '/pages/about.html', controller: AboutController });
$routeProvider.when('/privacy', { templateUrl: '/pages/privacy.html', controller: AboutController });
$routeProvider.when('/terms', { templateUrl: '/pages/terms.html', controller: AboutController });
$routeProvider.otherwise({ redirectTo: '/' });
}]);
Run Code Online (Sandbox Code Playgroud)
我的应用程序内置了一个CMS,您可以在/ pages目录中复制和添加新的html文件.
即使对于新的动态添加文件,我仍然希望通过路由提供程序.
在理想的世界中,路由模式将是:
$ routeProvider.when('/ pagename ',{templateUrl:'/ pages/pagename .html',controller:CMSController});
因此,如果我的新页面名称是"contact.html",我希望有角度选择"/ contact"并重定向到"/pages/contact.html".
这有可能吗?!如果是这样的话怎么样?!
更新
我现在在我的路由配置中有这个:
$routeProvider.when('/page/:name', { templateUrl: '/pages/home.html', controller: CMSController })
Run Code Online (Sandbox Code Playgroud)
在我的CMSController中:
function CMSController($scope, $route, $routeParams) {
$route.current.templateUrl = '/pages/' + $routeParams.name + …Run Code Online (Sandbox Code Playgroud) 我是AngularJS的新手,就像我到目前为止看到的那样,特别是模型/视图绑定.我想利用它来构建一个简单的"添加到篮子"功能.
到目前为止这是我的控制器:
function BasketController($scope) {
$scope.products = [];
$scope.AddToBasket = function (Id, name, price, image) {
...
};
}
Run Code Online (Sandbox Code Playgroud)
这是我的HTML:
<a ng-click="AddToBasket('237', 'Laptop', '499.95', '237.png')">Add to basket</a>
Run Code Online (Sandbox Code Playgroud)
现在这可行但我非常怀疑这是在我的模型中创建新产品对象的正确方法.然而,这是我完全缺乏AngularJS体验的地方.
如果不是这样做的话,最佳做法是什么?
我有2个html页面,welcome.html以及login.html这两者都是"插入"到index.html通过在URL dependending ngview属性和路由器供应商,作为我的AngularJS应用程序的一部分.
可以在AngularJS主页的Wire up a Backend下找到此示例.
我的问题:有没有办法动画之间的过渡welcome.html和login.html?
我正在使用Chutzpah来执行我的JavaScript单元测试.
我引用了我的源文件的路径,下面有一系列的测试.Visual Studio中的Text Explorer列出了我的测试,我可以直接从IDE执行它们,所以一切似乎都正常工作.
但是,我想进入运行测试时正在执行的源代码.
这可能吗?
为什么以下CSS不起作用?
a {
width: 60px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
Run Code Online (Sandbox Code Playgroud) 我不知道为什么,但我发现使用AngularJS设置JavaScript测试真的很难.
我有我的app.js,controller.js以及其他一些用于Ajax,存储服务,过滤器等的文件.我的应用程序工作正常,但我想学习如何做E2E和单元测试.
我想我需要创建一个运行我的测试的独立HTML页面,但我不确定,我也不确定我可能需要哪些额外的JavaScript文件/库.
是否有一个AngularJS测试示例我可以用来进行初始设置?
理想情况下,我想运行我在Visual Studio 2012中创建的JS测试......但这是一件好事!
我一直在玩缓存清单文件并尝试让它停止缓存它声明的页面.
用户导航到的包含清单的任何页面都将隐式添加到应用程序缓存中
高手.我希望清单文件缓存特定的工件,其中一个是我的在线单页应用程序HTML的离线版本,但不是缓存在线版本.
angularjs ×7
javascript ×6
unit-testing ×2
url-routing ×2
animation ×1
chutzpah ×1
css ×1
css3 ×1
data-binding ×1
debugging ×1
events ×1
html5 ×1
jquery ×1
manifest ×1
offline ×1
phantomjs ×1
testing ×1