我希望能够在事件发生更改指令显示的内容时通知指令.我知道指令只运行一次,所以我想知道如何做到这一点.我也不确定我是否应该使用$ emit或$ broadcast,这是一个控制器的子指令?
例如,在我的控制器中,我有:
$rootScope.$emit('PHOTO_UPLOADED', photo);
在我的指令中:
.directive('photo', [function () {
return {
restrict: 'EA',
scope: {user: '='},
replace: true,
template: '<div id="{{user.id}}"></div>',
link: function ($scope, element, attrs) {
var thumbnail = ($scope.user && $scope.user.image)
? $scope.user.image
: '/default.png';
element.css('background-image', 'url(' + thumbnail + ')');
$rootScope.$on('PHOTO_UPLOADED', function(event, data) {
thumbnail = data;
});
}
};
}])
Run Code Online (Sandbox Code Playgroud)
我试图这样做但没有发生任何事情,缩略图没有更新,因为该指令已经运行.
我有一个模块......
angular.module('myModule', []);
Run Code Online (Sandbox Code Playgroud)
然后是工厂
angular.module('myModule')
.factory('factory1', [
function() {
//some var's and functions
}
]);
Run Code Online (Sandbox Code Playgroud)
然后是另一家工厂
angular.module('myModule')
.factory('factory2', [
function() {
//some var's and functions BUT I want to use some var's from factory1
}
]);
Run Code Online (Sandbox Code Playgroud)
但是我想在factory2中使用factory1中的一些变量,如何将factory1注入factory2?
我试图隐藏DIV模糊(焦点已被删除DIV).我正在使用角度和引导程序.到目前为止,我已经尝试在显示DIV时设置"焦点" ,然后ng-blur在用户点击屏幕上的任何其他位置时设置功能.这不起作用.
基本上问题是我#lockerBox不能通过JS 设置焦点我的" ",hideLocker当我DIV点击它时,我的" "功能没有问题.
<div class="lock-icon" ng-click="showLocker(result); $event.stopPropagation();"></div>
<div ng-show="result.displayLocker" id="lockerBox" ng-click="$event.stopPropagation();" ng-blur="hideLocker(result)" tabindex="1">
$scope.displayLocker = false;
$scope.showLocker = function ( result ) {
$scope.displayLocker = !$scope.displayLocker;
node.displayLocker = $scope.displayLocker;
function setFocus() {
angular.element( document.querySelector( '#lockerBox' ) ).addClass('focus');
}
$timeout(setFocus, 100);
};
$scope.hideLocker = function ( node ) {
$scope.displayLocker = false;
node.displayLocker = $scope.displayLocker;
};
Run Code Online (Sandbox Code Playgroud) 我有一个表的ng-repeat,我希望能够在<td>单击时添加一个类,并在单击时删除该类.<td>可以同时选择多个.现在所有的城市都适用或不适用.
例如:(假设节点有100个项目)
<tr ng-repeat node in nodes>
<td>{{node.name}}</td>
<td>{{node.date}}</td>
<td ng-click="toggleMe( node.city )" ng-class"{clicked : isClicked()}" >{{node.city}}</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
在我的JS中
$scope.cityArr = [];
$scope.toggleMe = function(city) {
if ($scope.count > 0) {
angular.forEach($scope.cityArr, function(value) {
if (city === value) {
$scope.clicked = false;
} else {
$scope.cityArr.push(city);
$scope.clicked = true;
}
});
} else {
$scope.cityArr.push(city);
$scope.clicked = true;
}
$scope.count = 1;
};
$scope.isClicked = function() {
return $scope.clicked;
};
Run Code Online (Sandbox Code Playgroud) 我有一个有两种状态的表单:编辑和可见.当您单击图标编辑表单时,底部的两个按钮(如提交一样)似乎保存或取消.单击它们时,表单会更新(或取消),按钮会消失.问题是,当我重新打开表单进行编辑(并且按钮再次可见)时,单击的最后一个仍然在Chrome中应用了悬停状态.
<div>
<div class="col-xs-5">
<button class="btn btn-primary pull-right" ng-click="save(true)">Save</button>
</div>
<div class="col-xs-5 cancel-btn">
<button class="btn btn-primary pull-left" ng-click="cancel()">Cancel</button>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
为简单起见,这里只是取消功能......
$scope.cancel = function() {
//set a flag for angular to hide/show editing mode in HTML
$scope.editMode = false;
};
Run Code Online (Sandbox Code Playgroud) 我有一个ng-repeat,只想在ng-repeat中div使用类的第一个样式type.
<div class="my-list" ng-repeat="item in list">
<div class="type">
<span>{{item.label}}</span>
</div>
<div class="check">
<span>{{item.ischecked}}</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但是它将CSS应用于所有divs类的type
.my-list .type:first-child
Run Code Online (Sandbox Code Playgroud) 我有一系列的对象......
var userObjects =[
{userName: bob,
age: "25",
gender: "m"
},
{userName: bill,
age: "15",
gender: "m"
},
{userName: jen,
age: "45",
gender: "f"
},
]
Run Code Online (Sandbox Code Playgroud)
现在我在我的HTML中有一个ng-repeat来迭代这个对象数组.我希望它按年龄排序:
<tr ng-repeat="user in userObjects | orderBy:-age">
Run Code Online (Sandbox Code Playgroud)
在我的JS中,我将我的年龄转换为汉堡......
data.forEach(function(user){
user.age= parseFloat(user.age);
}
Run Code Online (Sandbox Code Playgroud)
Angular不会按年龄排序,我希望看到......
bill, 15
bob, 25
jen, 45
Run Code Online (Sandbox Code Playgroud)
但相反,他们到处都是.我究竟做错了什么?
谢谢!
我有以下结构,其中第二个元素可能出现也可能不出现.
<div class="wrapper">
<div class="firstElement"></div>
<div class="secondElement"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想有条件地设置样式,.firstElement如果.secondElement存在的话.
有没有办法用PURE CSS做到这一点?有兄弟选择器/父选择器吗?
谢谢!
我希望能够匹配以下示例:
www.example.com
http://example.com
https://example.com
Run Code Online (Sandbox Code Playgroud)
我有以下正则表达式不匹配www.但会匹配http:// https://.我需要匹配上面示例中的任何前缀,直到下一个空格,从而整个URL.
var regx = ((\s))(http?:\/\/)|(https?:\/\/)|(www\.)(?=\s{1});
Run Code Online (Sandbox Code Playgroud)
假设我有一个如下所示的字符串:
I have found a lot of help off www.stackoverflow.com and the people on there!
我想在该字符串上运行匹配并获取
www.stackoverflow.com
谢谢!
嗨,我有一个带有文本区域的表单,其中包含多个电子邮件地址.我如何在AngularJS中验证这一点,现在它说当有多个电子邮件时它无效.电子邮件将以逗号分隔.
<form name="testForm" ng-submit="submit()" novalidate>
<textarea type="email" multiple rows="3" name="emailInput" placeholder="Email Addresses" ng-model="user.email" required></textarea>
<button type="submit" ng-disabled="testForm.$invalid">Email</button>
</form>
Run Code Online (Sandbox Code Playgroud) angularjs ×8
javascript ×5
css3 ×3
css ×2
blur ×1
email ×1
focus ×1
forms ×1
hover ×1
html ×1
html5 ×1
ng-class ×1
parsefloat ×1
regex ×1
sql-order-by ×1
string ×1
whitespace ×1