我有一个带对象的数组.我想找到一个特定对象的索引.这个对象有一个唯一的id属性'值,我可以找到它$filter:
var el = $filter('filter')( tabs, { id: id })[0]; // "el" is my unique element
Run Code Online (Sandbox Code Playgroud)
但我怎么知道它的原始数组中这个元素的索引是什么?是否$filter可以提供我这个信息?
到目前为止,我没有找到Angular解决方案,因为我无法在此页面上获得更多有用的信息.所以我用过Array的indexOf方法:
var el_index = tabs.indexOf( el );
Run Code Online (Sandbox Code Playgroud)
要获取具体的所有元素的索引,id我们采用类似的方式:
$scope.getTabsIndexes = function(id){
var els = $filter('filter')( tabs , { id: id });
var indexes = [];
if(els.length) {
var last_i=0;
while( els.length ){
indexes.push( last_i = tabs.indexOf( els.shift() , last_i ) );
}
}
return indexes;
}
Run Code Online (Sandbox Code Playgroud)
但它太长了,我确信我在这里重新发明轮子......
如果我尝试调用该fetchToken()函数,它只是说它不是一个函数.如果我把它放在渲染功能之外this.props是undefined,我无法调用它.
class LoginPage extends Component {
componentDidMount() {
Linking.addEventListener('url', this.handleOpenURL);
}
componentWillUnmount() {
Linking.removeEventListener('url', this.handleOpenURL);
}
handleOpenURL(event) {
let code = event.slice(22,86);
console.log(code);
this.fetchToken(code)
}
render() {
function fetchToken(code) {
this.props.actions.fetchToken(code)
}
return (
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
<TouchableHighlight style={{backgroundColor: '#9b59b6', height: 70, padding: 20}} onPress={this.openAuth.bind(this)}>
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
<Text style={{color: 'white', fontSize: 16}}>Authenticate with Dribbble</Text>
</View>
</TouchableHighlight>
</View>
)
}
}Run Code Online (Sandbox Code Playgroud)
我正在寻找一种在加载应用程序后从DOM获取初始数据的方法.数据已由服务器插入视图中.是Module的value方法是一个很好的办法吗?
我也想知道如何在routes我使用时从视图中获取数据,我可以使用script标签在特定范围内注入数据吗?
请告诉我为什么:before伪元素img在这种情况下的行为不像常规:

左边的一个是div具有img内部和img的宽度和高度等于100%.右侧是div与:before和:before的宽度和高度也是100%,但效果是不同的!
(我知道我可以使用一种background-image解决方法,但是:pseudo当它的content属性出现时有什么问题url()?)
为什么当我分成ul两列时,它会失去子弹?HTML:
<ul class="with-columns">
<li>Ringo
<li>George
<li>John
<li>Paul
</ul>
Run Code Online (Sandbox Code Playgroud)
CSS:
ul.with-columns{
-moz-columns: 2;
-webkit-columns: 2;
-o-columns: 2;
columns: 2;
list-style-type:circle; /* Not works! */
}
Run Code Online (Sandbox Code Playgroud)
我们的webapp依赖于React 15.为了保持Android/iOS设备之间的平等,import React from "react";即使在设备上也应该产生React 15.但是,在通过npm安装react@15.0.2并尝试以开发模式启动Android应用程序后,我收到此错误:
无法构建DependencyGraph:@providesModule命名冲突:
重复模块名称:IOSDefaultEventPluginOrder路径:/node_modules/react/lib/IOSDefaultEventPluginOrder.js与/node_modules/react-native/Libraries/ReactIOS/IOSDefaultEventPluginOrder.js冲突此错误是由两个不同文件中具有相同名称的@providesModule声明引起的.错误:@providesModule命名冲突:重复模块名称:IOSDefaultEventPluginOrder
路径:/ node_modules/react /lib /IOSDefaultEventPluginOrder.js与/node_modules/react-native/Libraries/ReactIOS/IOSDefaultEventPluginOrder.js冲突此错误是由两个不同文件中具有相同名称的@providesModule声明引起的.在HasteMap._updateHasteMap(/node_modules/node-haste/lib/DependencyGraph/HasteMap.js:160:15)/node_modules/node-haste/lib/DependencyGraph/HasteMap.js:125:25
我知道这是由于React和React Native包含相同的js文件,但有没有人知道是否有办法正确解决这些依赖关系?
环境: - Mac OSX(最新) - Android(尚未在iOS上测试) - React Native 0.25.0-rc
在我的React本机'项目中,我需要检查何时在屏幕上显示组件以通过后台线程更新UI.
我查看组件道具规格并尝试componentWillUnmount,componentWillMount但它不适用于我的情况.
我也尝试使用navigator.getCurrentRoutes(),但它返回空对象.
请帮我解决这个案子!
升级到0.26.0-rc版本后,在iOs上这行:
DeviceEventEmitter.addListener('keyboardWillShow', (e)=>this.updateKeyboardSpace(e));
Run Code Online (Sandbox Code Playgroud)
什么也没做.键盘打开时,updateKeyboardSpace永远不会调用方法.
我用这个导入DeviceEventEmitter:
import React from 'react';
import {DeviceEventEmitter} from 'react-native';
Run Code Online (Sandbox Code Playgroud)
我从版本0.21升级,它在那里工作正常.
尝试将边框设置为ScrollView组件.在iOS上它运行得很好,但不适用于Android:
scrollView: {
borderColor: '#000000',
borderStyle: 'solid',
borderWidth: (1),
}
Run Code Online (Sandbox Code Playgroud)
iOS上的黑色边框:
Android上没有黑色边框:
react-native ×6
javascript ×3
angularjs ×2
css ×2
html ×2
android ×1
bulletedlist ×1
client-side ×1
html-lists ×1
ios ×1
react-router ×1
reactjs ×1
safari ×1
xml ×1